получить вывод другой программы

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

подняли похожую тему в конфе там кинули ссылку на использовани mplayer
http://svn.berlios.de/svnroot/repos/cac ... player.pas

сохраню для потомков. например так можно показывать видео в линуксе из лазаруса. правда не смотрел передается ли там хендл окна в котором проигрывать, но если что можно прикрутить.
alex208210
постоялец
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Сообщение alex208210 »

program prrocess;
{$mode objfpc}{$H+}
uses classes,process;

Const
TheProgram = 'ls -a';

Var
S : TProcess;
Buf, ss : ansistring;
Count : longint;
begin
S:=TProcess.Create(Nil);
S.Commandline:=theprogram;
S.Options:=[poUsePipes,poNoConsole];
S.execute;
SetLength(buf, 1000);
Repeat
Count:=s.output.read(buf[1], length(buf));
ss:=ss + Copy(buf, 1, Count);
until Count=0;
writeln(ss);
S.Free;
writeln('finished Ok.');
end.

по этому примеру будет выводиться информация только для одной команды.. как вывести содержимое консоли например если параметр theprogram будет равен "ifconfig | grep eth0" ?
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

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

Const 
  TheProgram = 'bash -c "/sbin/ifconfig|grep eth0"';
alex208210
постоялец
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Сообщение alex208210 »

спасибо, работает)
Ответить