
05.09.2008, 19:33
|
 |
Начинающий
|
|
Регистрация: 14.04.2008
Адрес: с. Россия, г. Курган
Сообщения: 160
Версия Delphi: 7
Репутация: 10
|
|
Как запустить консольное приложение и перехватить вывод?
Вот код (взял из dkrb):
Код:
procedure ExecCmdine(const CmdLine: string; CmdResult: TStrings);
var
Output: PIOFile;
Buffer: PChar;
TempString: string;
Line: string;
BytesRead: Integer;
const
BufferSize: Integer = 1000;
begin
Output := popen(PChar(CmdLine), 'D:\Проекты\©Сапунов Василий\Мега Калькулятор 23\Mega Calc v1\Console\Integer\IntegerPlus.exe');
GetMem(Buffer, BufferSize);
if Assigned(Output) then
try
while feof(Output) = 0 do
begin
BytesRead := Libc.fread(Buffer, 1, BufferSize, Output);
SetLength(TempString, Length(TempString)+BytesRead);
memcpy(@TempString[length(TempString)-(BytesRead-1)], Buffer, BytesRead);
while Pos(#10, TempString) > 0 do
begin
Line := Copy(TempString, 1, Pos(#10, TempString)-1);
if CmdResult<>nil then CmdResult.Add(Line);
TempString := copy(TempString, Pos(#10, TempString)+1, Length(TempString));
end;
end;
finally
Libc.pclose(output);
wait(nil);
FreeMem(Buffer,BufferSize);
end;
end;
Но вот тут какие-то ошибки:
Помогите...
|