Diesel Pascal

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

Re: Среда разработки и язык Суржи

Сообщение Tango » 21.01.2013 11:37:38

он перестрахоовывается, антивирус.

У меня интерпретатор выполняет макро-конструкции.
Аватара пользователя
Tango
постоялец
 
Сообщения: 156
Зарегистрирован: 31.05.2012 17:07:30

Re: Среда разработки и язык Суржи

Сообщение *Rik* » 17.05.2013 12:52:29

Tango писал(а):Всё равно не пойму, зачем! Очень хотелось попрограммировать? Вы сделали тот же Лазарус.
Не пойму.

Разве это минус? По поводу трудозатрат, другой вопрос. Могу только сказать, можете меня не жалеть, взамен я получил огромное удовлетворение. К тому-же не так уж всё и сложно, я же VCL и RTTI не писал, это заслуга инженеров её создавших, а RTTI это та самая подводная часть айсберга которая обеспечивает технологию позднего связывания и после компиляции лежит на 95% мертвым грузом, раз уж она всё равно есть, грех её не использовать. Мой труд, это лишь не значительная "надводная часть айсберга" подвязки готовой VCL и RTTI для своих целей.
Если говорить о практической стороне вопроса, всё разрабатывалось не просто так, чтобы было написано, я преследовал конкретные цели. Скажу, что этим инструментом жизнь я себе облегчил и на сегодня у меня более сотни рабочих мест под управлением этой системой с возможностью подключения различного оборудования и межофисным обменом информацией по разным каналам через XML, с возможностью экспорта и импорта информации и отчетов во что угодно. Думаю при другом подходе я бы не обеспечил нужный функционал и эффективность, удобство использования системы конечным пользователем и удобство и эффективность обслуживания системы.
Вложения
surgy.jpg
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Среда разработки и язык Суржи

Сообщение *Rik* » 06.08.2013 11:29:34

Последнее время Lazarus очень радует, не хватает только компонентов. После того как Fast-Report заявили о портировании своего генератора отчетов на Lazarus, я тоже решился перенести свою разработку на него. Кроссплатформенность покоя не дает, хочу сделать среду на основе Lazarus RTTI. Приложения созданные в ней смогут выполняться без перекомпиляции в любой ОС под которую удастся собрать DBI-Builder. Сейчас пока идет работа над дизайнером. Есть дизайнер форм, вынесенный в компоненту, инспектор объектов заимствованный из самого Lazarus, редактор кода на основе SynEdit, при добавлении компонентов почти готова компоновка класса в редакторе и генерация кода обработчиков событий. Осталось разрулить некоторые каверзные нюансы и можно приступать к созданию исполняемой части - виртуальной машины, на основе интерпретатора. Возможность тестирование пока есть только под Win и под Linux.
Последний раз редактировалось *Rik* 18.03.2014 19:59:50, всего редактировалось 1 раз.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Среда разработки и язык Суржи

Сообщение Kemet » 06.08.2013 14:50:10

Юрий, а где можно скачать вариант под Лазарус?
Kemet
постоялец
 
Сообщения: 241
Зарегистрирован: 10.02.2010 19:28:32
Откуда: Временно оккупированная территория

Re: Среда разработки и язык Суржи

Сообщение *Rik* » 07.08.2013 10:57:56

Kemet писал(а):Юрий, а где можно скачать вариант под Лазарус?

Рабочий прототип пока бесполезен, могу выложить его в текущем состоянии чуть попозже, как доделаю определенный минимум...
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Среда разработки и язык Суржи

Сообщение *Rik* » 26.08.2013 17:03:35

Дизайнер форм вынесен в компоненту, пока без хинтов и подсказок и прочих удобств. Все пока очень сырое и сделано по принципу лишь бы работало... Возможно кому-нибудь это пригодится или будет интересно покопаться в коде. Умеет работать с формами, модулями данных. С фреймами тоже может но пока не особо.

Распаковать архив. Из папки Design открываем пакет VisualDesign.lpk жмем компилировать, затем использовать. Перед установкой пакета и компиляции Lazarus, появится сообщение "Модуль CheckGroupEditorDlg дублируется в путях к модулям IDE", жмем игнорировать всё.
После установки пакета открываем CrossDesigner.lpr и собираем IDE.

Тестировал под win7 и AltLinux Simply. Lazaurs 1.0.10
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Среда разработки и язык Суржи

Сообщение *Rik* » 23.10.2013 16:38:38

В процессе работы над системой, появились некоторые побочные продукты, возможно кому-то ещё пригодятся:
Пакет компонентов VisualTech. Содержит:
TDesignerManager - дизайнер форм, (пока без наворотов, некогда дорабатывать..)
TSynSurSyn - подсветка синтаксиса для TSynEdit для языку Surgy
TxDBGrid - сетка с измененным оформлением и свойствами. У меня часто бывает, что хочется "впихать" в экран побольше информации, для этого сделал сетку, которая может отображать 2 поля в одном столбце (в столбцах смотрите свойства FieldName и xFieldName). Можно задать измененное оформление в стиле 1С7 (свойство xStyle: если xgsClassic - обычный вид, xgsNormal - измененный). Может выравнивать ширину столбцов в процентном отношении к ширине сетки, для этого Options [xgsAutoSizeColumn = True] ширина в процентном отношении указывается в каждом столбце, свойство PrcWidth. Для каждого поля в столбце и каждого заголовка, можно задать опцию переноса TxColumn.WordWrap и TxColumn.xWordWrap, TxColumnTitle.WordWrap и TxColumnTitle.xWordWrap. Может отрисовывать иконку из TitleImage в сетке (TxColumn.DrawImage = True), в зависимости от значения поля. Можно воспользоваться свойством OnImageIndexFromField, если этот обработчик не задан, и поле числовое, пытается отрисовать иконку с прямым значением поля.

Приложение LazResCreator для создания ресурсов *.lrs из изображений. Построен на основе исходного кода LazRes, но в отличае от последнего имеет оконный интерфейс.
Кроссплатформенный..
Изображение

Взять можно тут:
Аваст может ругаться на редкий файл...
http://visual-t.ru/index.php/skachat
http://visual-t.ru
Последний раз редактировалось *Rik* 15.03.2014 19:39:53, всего редактировалось 1 раз.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Среда разработки и язык Суржи

Сообщение *Rik* » 30.12.2013 10:46:41

Допилил IDispatch в интерпретаторе. Ниже по ссылке простой пример использования. Сам интерпретатор сделан в виде компоненты, но она ни куда не устанавливается, всё что с ней связано, находится в папке SuCompil.

Интерпретатор Object Pascal позволяет повысить гибкость приложений на FreePascal. Вы можете подключить его к своему проекту и часть кода вынести в скрипты интерпретатора, это особенно удобно при подготовке отчетов либо использовать там, где логика приложения часто меняется, чтобы не перекомпилировать приложение лишний раз. Вы можете подключать к интерпретатору объекты вашей программы (формы, модули данных, наборы данных).
Язык встраиваемого интерпретатора объектно ориентированный, Вы можете объявлять классы, поддерживается наследование и полиморфизм (В отличие от стандартной реализации Pascal, override при переопределении метода класса писать не нужно, просто переписываем метод в классе наследнике с тем-же именем).

В примере компонента создается в TForm1.FormCreate, там-же ей назначаются обработчики событий:
OnGetUnitSource - Запрашивает исходный код модуля. Имя модуля передается в AUnitName, Когда нужен код программы (главного модуля) AUnitName = '!'.
OnCompileError - сток ошибок при компиляции
OnCompileMessage - сток сообщений при компиляции
OnAddObject - если требуется подключить объект программы к скрипту
OnAddClass - Добавляет класс в таблицу типов. Если вы добавили объект вашей программы в OnAddObject и во время компиляции получили сообщение о неизвестном типе, то класс объекта и public свойства должны быть импортированы в таблицу типов инетрпретатора заранее с помощью OnAddClass или OnAddClassImporter, большая часть типов уже подключена к интерпретатору, вам потребуется добавлять классы и типы, только если вы получите сообщение об ошибке - "неизвестный тип".
OnAddClassImporter - импортирует в таблицу типов интерпретатора классы, типы, константы c помощью специального класса. В этом примере в обработчике событий содержится добавление класса, который добавляет в скрипт информацию о типах и компонентах ZEOS.

Примеры скриптов в папке ..CompilTest\Examples\
В т.ч. 2 примера для вывода информации в Excel и OpenOffice через OLE.

http://visual-t.ru/files/CompilTest.zip
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Среда разработки и язык Суржи

Сообщение Vapaamies » 30.12.2013 20:26:35

*Rik* писал(а):(В отличие от стандартной реализации Pascal, override при переопределении метода класса писать не нужно, просто переписываем метод в классе наследнике с тем-же именем).

Вот это правильное решение. Хотелось бы услышать также отзывы о реальной практике подобного подхода -- не вызывает ли это затруднений с осмыслением факта перекрытия метода?
Аватара пользователя
Vapaamies
постоялец
 
Сообщения: 291
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 14.02.2014 21:09:50

Дизель-паскаль

Дизель-паскаль - это кросс платформенная среда разработки с открытым кодом на FreePascal/Lazarus. Интерфейс и функционал среды аналогичен интерфейсу Lazarus, имеет встроенные интерпретаторы FreePascal и DieselPascal. Оба языка поддерживают ООП. Можно объявлять классы, поддерживается наследование и полиморфизм. Встроенный интерпретатор FreePascal довольно тесно совместим с оригиналом за исключением некоторых нюансов, касающихся перегрузки процедур и функций и инициализации массивов. Приложения дизель-паскаль представляют из себя XML файл содержащий ресурсы (формы, фреймы, модули данных) и код для интерпретатора Free/Diesel Pascal. Приложения выполняются виртуальной машиной, компиляция кода во внутренний формат происходит при запуске приложения (компиляция на лету), поэтому приложения Дизель паскаль будут работать без перекомпиляции и переделок на любой платформе, под которую удастся собрать сам Дизель-паскаль. Сама система задумана как дополнение к Lazarus, предназначена для разработки бизнес программ либо других программ автоматизации какой либо деятельности, но подразумевающей немного иной подход в построении и выполнении приложения. Дизайнер и машина Дизель-паскаль могут загружать приложения как локально, так и по протоколу http, что дает дополнительное преимущество при многопользовательской работе.

Дизель-сервер - это простой http сервер приспособленный для отдачи приложений Дизель-паскаль и других файлов используемых приложением. При многопользовательской работе приложение (XML файл) может быть размещен либо в общей папке на файловом сервере, что может оказаться не совсем удобным, либо раздаваться по протоколу http. Чтобы не разворачивать полноценный HTTP сервер, для этих целей, можно воспользоваться Дизель-сервером. (Приложение пока в стадии тестирования и имеет GUI, поэтому на Unix системах без графической среды не запустится).

Менеджер приложений - что-то вроде лаунчера в 1С. Позволяет создать список приложений и запускать их на выполнение либо загружать в дизайнер.

В процессе работы над проектом возникли некоторые компоненты и модификации:

Компоненты VisualTech - поставляются в комплекте с Дизель-паскалем. Включают компоненты: дизайнер форм, xDBGrid - сетка с измененными оформлением и свойствами, умеет отображать 2 поля в одном столбце, может выравнивать ширину колонок в процентном отношении к общей ширине сетки. Значения ячеек можно копировать в буфер обмена по Ctrl + C, даже когда стоит режим выделения всей строки, курсор подсвечивающий активную ячейку всегда существует (на изображении ниже он заметен в столбце Доп) и им можно управлять. В столбцах можно выводить иконку из TImageList в зависимости от значения поля.
Другие различные компоненты, в основном - поля с кнопками и лэйблами.

Компонет TxDBF - клон TDBF, адаптированный для работы с кодовыми страницами cp866 и 1251. Поставляется с Дизель-паскалем.

Компонеты IBX - дорабтотка IBX для работы в рамках 2х транзакций, по типу FIBPlus. В TIBDataSet добавлена поддержка Returning Field, добавлена поддержка эмуляции Boolean полей, автотримирование строковых значений (свойство AutoTrim), добавлены свойства AutoStartTransaction и AutoCommit. Убран старый баг в TIBStoredProc (http://www.ibase.ru/devinfo/ibstp.htm).

В саму среду добавлена поддержка Synapse, TZipper, TUnZipper(TxZipper, TxUnZipper), поэтому из Дизель-паскаль будет доступ к HTTP, FTP, Pop, Smtp, архивам.

Все компоненты входят в поставку DieselPascal.
CrossDesigner, CrossMashine, DManager - проекты реализующие дизайнер, машину и менеджер, все 3 находятся в папке CrossDesigner.
В комплекте с системой есть папка exe, в ней откомпилированные версии под Win и Linux, но в них есть косяк, если не хочется возиться со сборкой чтобы посмотреть, их использовать можно, но для этого в своей пользовательской папке создайте папку DieselPascal (касается и Win и Linux) - там хранятся некоторые настройки, баг заключается в том, что программа её не создает автоматом. Исходники исправлены, если собрать из исходников бага не будет.
После первого запуска CrossDesigner расположите элементы программы - главную форму, инспектор, редактор кода и менеджер проекта - так как вам удобна и задайте их оптимальный размер, затем выполните Опции->Сохранить расположение элементов.

http://www.visual-t.ru/download.html

ps.
Пока ещё не прикручен генератор отчетов, в остальном всё работоспособно, использую DieselPascal пару месяцев. Из все коммерческих компонент у меня остался только FastReport, надеюсь со временем допилить LazReport и будет полное счастье...
Приложение Дизель-паскаля запущенное под Linux
Изображение

Простенькие примеры:
http://visual-t.ru/files/Fractals.lm9
http://visual-t.ru/files/Excel.lm9 (использует OLE, поэтому работать будет только под Windows)
http://visual-t.ru/files/OpenOffice.lm9 (использует OLE, поэтому работать будет только под Windows)

Система может загружать приложения по протоколу HTTP, поэтому адреса ссылок можете добавить в DManager или в дизайнере выполните Файл->Открыть URL и скопируйте ссылку туда (В дизайнере приложения загруженные по HTTP будут только для чтения, чтобы их можно было править, сохраните их локально, для этого в дизайнере выполните Файл->Сохранить проект)

http://visual-t.ru/files/Tetris.lm9 - тетрис малость проблемный, работает хорошо, закрывается плохо, если запускать локально, то пользоваться можно...

Дизайнер Дизель-паскаля
В редакторе кода работает MouseLink. Удерживая Ctrl при наведении на идентификатор объявленный в программе, он подсвечивается, при нажатии на него мышью - переход к объявлению идентификатора. Для методов - переход возможен от реализации к объявлению и наоборот.
Ctrl + Shift + C в объявлении метода - создает его реализацию (только 1 выбранный метод, курсор должен находится в имени метода).
Ctrl + Shift + Стрелка вверх - переход между объявлением и реализацией метода.

Есть отладчик, можно ставить точки останова и выполнять программу по шагам (F8).
Закладки ставятся для каждого модуля не зависимо (пока, потом будет исправлено), т.е. в каждом модуле можно использовать 10 закладок и переход по закладке возможен только внутри модуля. Ctrl + Shift + [0..9] - поставить закладку.

Контекстное меню в редакторе отсутствует, поэтому управление только быстрыми кнопками, как описано выше.
Ctrl + [0..9] - перейти по закладке
Модули можно объявлять по русски, но вот в реакторе они будут отображаться как символы (другой цвет), пока не победил..
Изображение

Изображение
ps:
Пардон, но сайт мой похерили хакеры, поэтому пока так как есть..
И кому я понадобился, и так всё бесплатно раздаю, и посещаемость почти нулевая...
Последний раз редактировалось *Rik* 15.03.2014 19:39:14, всего редактировалось 1 раз.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 19.02.2014 16:27:07

Добавлен LazReport, исправлены найденные баги.
Новый пример c Smtp: http://visual-t.ru/files/smtpexample.lm9
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal (Суржи)

Сообщение Sharfik » 19.02.2014 17:04:16

Мне вот интересно, тут в теме был разговор о передаче среды клиентам, для изменения кодов. А Lazarus никто не пробовал сделать портативным?
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 759
Зарегистрирован: 20.07.2013 01:04:30

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 19.02.2014 20:18:19

Sharfik писал(а):Мне вот интересно, тут в теме был разговор о передаче среды клиентам, для изменения кодов. А Lazarus никто не пробовал сделать портативным?

При желании всё можно сделать...
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 13.03.2014 14:48:02

Обновил:
Новая версия дизель паскаль 1.0.1
Новая версия компонент ibx 1.0.6
Новая версия компонент VisualTech

IBX 1.0.6
Для работы компонент требуется клиентская библиотека firebird,
для Linux libfbclient.so.2 Её следует поместить в /usr/lib
для Windows fbclient.dll Её следует поместить в windows/system

Изменения в этой версии:

Компонент TIBCustomDataSet:

Добавлено свойство UpdateTransaction, с помощью которого работа с базой
происходит в рамках 2х транзакций. SelectSQL будет использовать
Transaction, у этой транзакции рекомендуется назначить следующие параметры:
read
read_committed
rec_version
nowait
С этими параметрами транзакция стартует в режиме только чтение и фактически в состоянии Commit,
поэтому может жить сколь угодно долго, не оказывая ни какого влияния на работу базы.
Короткие "пишущие" запросы из InsertSQL, ModifySQL, DeleteSQL будут использовать UpdateTransaction, для неё
рекомендуется назначить следующие параметры:
write
wait
no_rec_version
read_committed
Это наиболее оптимальный вариант чтобы избежать DeadLock.
RefreshSQL использует транзакции по следующему алгоритму: Если (UpdateTranscation.InTransacton = True) то
используется UdateTransaction иначе используется Transaction.
После выполнения запроса из InsertSQL, ModifySQL, DeleteSQL, до завершения транзакции данные текущей записи
автоматически перечитываются с помощью RefreshSQL, поэтому в UpdateTransaction добавлен параметр read_commited.

Изменен редактор компонента TIBTransaction, в нем вариант Read Commited вписывает первый набор параметров для чтения,
добавлен вариант Read-write, который вписывает второй набор параметров для пишущих запросов.

Добавлены свойства AutoStartTransaction и AutoCommit
Добавлена эмуляция Boolean полей и автотримирование строковых полей (TIBCustomDataSet.AutTrim)

Добавлена поддержка выражений RETURNING FIELD в Insert и Update запросах, поддержка возвращаемых значений
из EXECUTE PROCEDURE, поддержка выражения EXECUTE BLOCK.

В TIBCustomDataSet вложен класс DefFormats для управления форматами TDateTimeField и TNumericField (и от них производных),
для задания определенного формата конкретных полей (TBooleanField, TNumericField) добавлено свойство
FieldsFormats: TStings, в нем для задания формата для поля MYFIELD нужно указать:
MYFIELD=# ### ##0.0000
На скриншоте видно, как работает форматирование для цифровых полей (и дат в Linux), появилась разрядность, количество нулей после запятой, автоматически добивается в зависимости от точности дробной части поля.
Изображение
Добавлено свойство EditFormats которое задает для конкретных полей: EditFormat для TNumericField и EditMask для остальных.
Пример:
MYDATEFIELD=00.00.0000

http://www.visual-t.ru
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Diesel Pascal (Суржи)

Сообщение *Rik* » 14.03.2014 18:10:59

На странице загрузок добавил пример с базой и отчетом. Для его работы потребуется последняя версия движка (1.0.2 обновил сегодня) и FireBird.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Пред.След.

Вернуться в Компилятор / язык программирования

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru