TProcess и WriteLn

Вопросы программирования и использования среды Lazarus.

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

TProcess и WriteLn

Сообщение *Rik* » 23.09.2013 14:49:42

Здравствуйте уважаемые коллеги.
Вот этот проект:
viewtopic.php?f=14&t=6974
я портировал с Delphi на Lazarus, но столкнулся с некоторыми проблемами, т.к. к сожалению не располагаю временем для экспериментов, поэтому прошу помощи.

Проблема собственно в следующем: Из под дизайнера, с помощью TProcess запускается виртуальная машина с интерпретатором Pascal. Через параметры в машину передается ссылка на приложение, которое виртуальная машина должна загрузить и выполнить. С этим собственно всё хорошо, но в процессе работы, машина должна обмениваться информацией (сообщения компилятора, отладочная информация) с дизайнером. Можно конечно все сообщения записывать в файл, который будет загружаться в дизайнер после компиляции, но хотелось бы миновать этот процесс.
Попробовал в машине, сообщения сбрасывать через WriteLn('Message') - так машина падает на этой строке, если WriteLn(StdOut, 'Message') - так работает, но в дизайнере в TProcess.Output ничего не приходит, а все что я отправил в StdOut вываливается в окне после того как закрываю приложение с машиной...

Видимо я не правильно использую WriteLn, поэтому вопрос к бывалым, как из запускаемого процесса отправить сообщение которое попадет в TProcess.Output в дизайнере...
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: TProcess и WriteLn

Сообщение *Rik* » 24.09.2013 15:17:38

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

Re: TProcess и WriteLn

Сообщение Alex2013 » 08.10.2013 15:24:04

А зачем такие "ужосы" :?: Есть масса библиотек с разной степенью навороченности скриптами в том числе и паскале-образными (смотри например мой проект MidAsm
Alex2013
долгожитель
 
Сообщения: 3146
Зарегистрирован: 03.04.2013 11:59:44

Re: TProcess и WriteLn

Сообщение *Rik* » 09.10.2013 13:06:07

Зачем, подробно объяснять не буду, всё и так уже расписано. Могу только сказать, всё это имеет конкретное промышленное применение и работает в масштабе предприятия с 20 гигабайтными базами данных, сканерами штрихкодов, межофисным обменом информацией по различным каналам. Портирование на лазарус даст независимость от конкретной ОС и реальную кроссплатформенность. Приложение, разработанное в вышеописанном проекте, будет работать без перекомпиляции на любой ОС, под которую возможно собрать в лазарусе движок. Вернее портирование можно сказать закончено, всё и так уже работает, есть недоделки, нет отладчика, не подключены большая часть компонентов, требуется доводка SynEdit...

ps:
Alex2013 писал(а): (смотри например мой проект MidAsm

Про вашу разработку пока ни чего сказать не могу. Она пока не работает в масштабах предприятия, вернее она вообще не работает. Как вы её до ума доведете, там поглядим... Вообще, такие системы не рассчитаны на большие проекты, даже разработчик HiASM говорит про сферу применения: небольшие программульки... Хотя проект интересный...
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: TProcess и WriteLn

Сообщение Alex2013 » 13.10.2013 18:51:40

Я разумеется понимаю что моя затея пока не более чем "досуг программиста" с туманными перспективами ... Но я о другом о возможности прямого использовать в подобных случаях паскаль-скриптов
То есть зачем запускать через TProcess виртуальную машину с интерплетатором паскаля если можно воспользоваться например DLL? (Хотя возможно я что-то неверно понял )
Alex2013
долгожитель
 
Сообщения: 3146
Зарегистрирован: 03.04.2013 11:59:44

Re: TProcess и WriteLn

Сообщение *Rik* » 14.10.2013 13:15:06

Alex2013 писал(а):Я разумеется понимаю что моя затея пока не более чем "досуг программиста" с туманными перспективами ... Но я о другом о возможности прямого использовать в подобных случаях паскаль-скриптов
То есть зачем запускать через TProcess виртуальную машину с интерплетатором паскаля если можно воспользоваться например DLL? (Хотя возможно я что-то неверно понял )

Это нужно для отладки. Интерпретатор здесь не ключевое слово. Есть среда разработки и есть разрабатываемое приложение, которое нужно запустить из под среды разработки. Все выглядит примерно так-же как и в Lazarus и по смыслу и визуально. Когда приложение готово, оно естественно будет работать само по себе без TProcess.
Принцип работы как у 1С. Есть движок с конфигурацией, которую выполняет интерпретатор, и есть дизайнер, который поставляется конечному пользователю вместе с движком. В результате конечный пользователь получает гибкий продукт, который может при желании сам доработать, не заморачиваясь с приобретением, установкой и настройкой средств разработки. Только в данном случае дизайнер выглядит и повторяет функционал Delphi/Lazarus...

Как видите на рисунке ниже, всё выглядит как сам Lazarus, только вместо паскаля - модифицированный паскаль (поддерживается 2 языка, превый - обычный паскаль, совместим с тем что в лазарусе но 60%). Здесь же справа, на переднем плане готовое тестовое приложение, запущенное через TProcess из под дизайнера. Когда приложение готово, дизайнер и TProcess уже не нужны...
Изображение

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


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru
cron