DBI-Builder 7 - Суржи - это среда быстрой разработки бизнес приложений (интерфейсов к базам данных) на базе 2х языков - Object pascal и одноименного языка Суржи. Проект рассчитан на программистов Delphi, желающих сделать свои программы максимально гибкими. Идея создания Суржи возникла в погоне за гибкостью. При выборе приложений корпоративной сферы, гибкость является одним из решающих факторов в пользу того или иного приложения. Возникла необходимость в эффективном средстве разработки приложений, которое не ограничивало бы возможности конечных пользователей по модификации приложений и позволяло вносить изменения в приложения без участия разработчика и перекомпиляции программы.
Особенности системы:
Возможность внесения изменения в логику конфигурации без перекомпиляции.
РаскрытьФункциональность дизайнера аналогична функциональности Delphi. Дизайнер построен на собственных компонентах VTDesigner. В нем поддерживается работа с формами и модулями данных, с визуальными и не визуальными компонентами.
Интерфейс среды выполнен в стиле Delphi 7. Имеется дизайнер форм, инспектор объектов, редактор кода с подсветкой синтаксиса и помощником набора кода.
Встроенные объектно - ориентированные языки Object pascal и Суржи.
Встроенный генератор отчетов FastReport 4.* (в бесплатной версии отключен)
Для работы с FireBird/InterBase встроена поддержка FIBPlus.
Конфигурация сохраняется в файл в формате XML.
Функционал обоих встроенных языков абсолютно одинаков. Оба языка поддерживают ООП. Поддерживается объявление классов, наследование и полиморфизм. Поддерживается работа с записями. Объявлять записи на данный момент в коде программы нельзя, но они могут быть импортированы из Delphi. Кроме этого оба языка поддерживают русскую транскрипцию.
Синтаксис языка Object pascal довольно близок к синтаксису применяемому в Delphi. .
Язык Суржи.
В целом синтаксис языка базируется на синтаксисе Delphi, но есть существенные отличия.
В частности, используются оператор присвоения = вместо :=, оператор сравнения == или =, инкремент и декремент в виде ++, --, +=, -=, а так же операторы побитового сдвига << и >>. Операторы if, for, while сами открывают блок, begin для открытия блока писать не нужно, но они всегда должны заканчиваться завершающей инструкцией end, даже в том случае, если в их теле всего один оператор. Кроме этого все процедуры и функции объявляются с ключевым словом method.
пример кода на Суржи:
модуль Главная_форма;
тип
ТГлавнаяФорма = класс(TForm)
КнПриветМир: TButton;
Редактор1: TEdit;
Циклы_и_массивы: TButton;
ЛистБокс: TListBox;
ТестМножества: TButton;
УсловныеОператоры: TButton;
метод Циклы_и_массивыПриНажатии(Отправитель: TObject);
метод КнПриветМирПриНажатии(Отправитель: TObject);
метод ТестМножестваПриНажатии(Отправитель: TObject);
метод УсловныеОператорыПриНажатии(Отправитель: TObject);
закрытые
защищенные
открытые
конец;
ТПеречисление = (П1, П2, П3, П4, П5, П6);
ТМножИзПеречисл = множество из ТПеречисление;
пер ГлавнаяФорма: ТГлавнаяФорма;
реализация
метод ТГлавнаяФорма.КнПриветМирПриНажатии(Отправитель: TObject);
начало
Редактор1.Текст = 'Привет мир!';
конец;
метод ТГлавнаяФорма.ТестМножестваПриНажатии(Отправитель: TObject);
пер
Множ: ТМножИзПеречисл;
начало
ЛистБокс.Элементы.Очистить;
ЛистБокс.Элементы.Добавить('Тест множества');
Множ = [П1..П3, П6];
если П1 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П1') конец;
если П2 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П2') конец;
если П3 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П3') конец;
если П4 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П4') конец;
если П5 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П5') конец;
если П6 естьв Множ тогда ЛистБокс.Элементы.Добавить('Множество содержит П6') конец;
ЛистБокс.Элементы.Добавить('Завершено');
конец;
метод ТГлавнаяФорма.УсловныеОператорыПриНажатии(Отправит ель: TObject);
пер
П: ТПеречисление;
начало
ЛистБокс.Элементы.Очистить;
ЛистБокс.Элементы.Добавить('Тест если (if)');
П = П3;
если П = П1 тогда ЛистБокс.Элементы.Добавить('П = П1')
иначеесли П = П2 тогда ЛистБокс.Элементы.Добавить('П = П2')
иначеесли П = П3 тогда ЛистБокс.Элементы.Добавить('П = П3')
иначеесли П = П4 тогда ЛистБокс.Элементы.Добавить('П = П4')
иначеесли П = П5 тогда ЛистБокс.Элементы.Добавить('П = П5')
иначеесли П = П6 тогда ЛистБокс.Элементы.Добавить('П = П6')
конец;
П = П4;
ЛистБокс.Элементы.Добавить('Тест выбор(case)');
выбор П из
П1: ЛистБокс.Элементы.Добавить('П = П1');
П2: ЛистБокс.Элементы.Добавить('П = П2');
П3: ЛистБокс.Элементы.Добавить('П = П3');
П4: ЛистБокс.Элементы.Добавить('П = П4');
П5: ЛистБокс.Элементы.Добавить('П = П5');
П6: ЛистБокс.Элементы.Добавить('П = П6');
конец;
ЛистБокс.Элементы.Добавить('Завершено');
конец;
метод ТГлавнаяФорма.Циклы_и_массивыПриНажатии(Отправител ь: TObject);
пер
Мас: массив [1..10] из Целое;
Стр: Строка = 'Заполнение массива';
Число: Целое = 0;
начало
ЛистБокс.Элементы.Очистить;
ЛистБокс.Элементы.Добавить(Стр);
для Число = 1 до 10 выполнять Мас[Число] = Число * 10 конец;
ЛистБокс.Элементы.Добавить('Массив заполнен');
ЛистБокс.Элементы.Добавить('Вывод значений элементов массива');
Число = 10;
пока Число > 0 выполнять
стр = ЦелоеВСтроку(Мас[Число]);
ЛистБокс.Элементы.Добавить(Стр);
Число--
конец;
ЛистБокс.Элементы.Добавить('Завершено');
конец;
конец.
Скачать можно отсюда
http://visualtech.shadr.ru/files/Surgy7Setup.exe