TProcess, Пайпы. Передача данных из оконки в оконку

Общие вопросы программирования, алгоритмы и т.п.

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

Ответить
Виталий
новенький
Сообщения: 40
Зарегистрирован: 05.01.2013 22:33:11

TProcess, Пайпы. Передача данных из оконки в оконку

Сообщение Виталий »

Всем привет. Возникла необходимость передавать данные из одного ПО в другое.
Обе - оконные.
Одна вызывает другую через TProcess.
Вопрос: Как правильно через его свойства пайпов передать строку (строки) в запускаемую программу, как в запускаемой принять и считать эти строки и вернуть ответ?
Если не сложно - хотелось бы видеть пример.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Если ода вызывает другую, то что мешает передать данные через параметры? Или использовать стандартную клиент-серверную схему - море примеров под делфи?
mig-31
постоялец
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Сообщение mig-31 »

Если обе программы на FreePascal так можно использовать TSimpleIpClient/TSimpleIPServer
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

Стандартными:

Код: Выделить всё

program Project1;

begin
  writeln ('Param: '+ParamStr(0));
end.

запускаешь
> project1 [параметр]
выдает:
>'Param: [параметр]

Добавлено спустя 2 минуты 1 секунду:
как получить в главной проге параметры можно почитать тут:
http://wiki.freepascal.org/Executing_External_Programs/ru
Виталий
новенький
Сообщения: 40
Зарегистрирован: 05.01.2013 22:33:11

Сообщение Виталий »

Понятно. Спс. Буду искать другой способ.
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

через TProcess сложно контролировать работу другого процесса.
Если нужно просто запустить одну через другую и отработав вторая передает перовой результат - то самое постое: классика - стандартный ввод вывод. Как пример ping команда в шеле..
Но если же нужно запустив и контролировать вторую.. проще работать в режиме клиент-сервер: Кто то будет ведущим, а кто то станет ведомым..
реализаций много: TSimpleIpClient/TSimpleIPServer, TCP/UDP, ShareMemory, Pipe(Windows)/DBUS(Linux)...
Ответить