Работа с bash (посылка команд, чтение инфы, вызов, закрытие)

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

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

Ответить
Ezhik80
незнакомец
Сообщения: 4
Зарегистрирован: 13.04.2011 13:10:41

Работа с bash (посылка команд, чтение инфы, вызов, закрытие)

Сообщение Ezhik80 »

Хочу, чтобы программа могла посылать команды в баш и читать из него сообщения.
Ничего не нашел по этому поводу. lazarus 0.9.28.2-8, fpc 2.4.0, убунту линукс 10.04.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Писал когдато программу использующую консольные команды в GUI .
http://workism.narod.ru/

исходники
http://narod.ru/disk/2227770001/archive ... ar.gz.html

она глючная, но для примера сойдет

Добавлено спустя 2 минуты 1 секунду:
Также можно использовать компонент TProcess, это даже удобнее
Ezhik80
незнакомец
Сообщения: 4
Зарегистрирован: 13.04.2011 13:10:41

Сообщение Ezhik80 »

Спасибо. Посмотрим, кстати да, прога гуишная

Добавлено спустя 29 минут 15 секунд:
А с Tprocess как?
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

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

var
  sl:TStrings;
begin
  sl:=TStringList.Create;
  FormMain_.ProcessCharSetDetect.Active:=false;
  FormMain_.ProcessCharSetDetect.CommandLine:='C:\PriceVampire\tools\Charset\koi_to_utf8.bat'; //Ну или exe
  FormMain_.ProcessCharSetDetect.Execute;
  sl.LoadFromStream(FormMain_.ProcessCharSetDetect.Output); 
end


Так же есть возможность считывать вывод в реальном времени через TAsyncProcess, событие OnReadData , но оно глючное, у меня заработало только когда считывал побайтово.
Ezhik80
незнакомец
Сообщения: 4
Зарегистрирован: 13.04.2011 13:10:41

Сообщение Ezhik80 »

Тут, как я понял через скрипт все идет?
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

А кто мешает ?

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

 FormMain_.ProcessCharSetDetect.CommandLine:='C:\PriceVampire\tools\Charset\program.exe";


Но в это млучае с некоторыми программами возможны зависания (TProcess не может дождаться завершения программы, хотя она уже завершилась, возможно в недавней версии Лазаруса это пофиксили)
Ezhik80
незнакомец
Сообщения: 4
Зарегистрирован: 13.04.2011 13:10:41

Сообщение Ezhik80 »

Спасибо. Пробуем
Ответить