metti su un form: 1 TButton, 1 TMemo ed 1 TEdit
poi prova questo codice (funziona su fpc 2.6.1):
procedure TForm1.Button1Click(Sender: TObject);
var AProcess: TProcess;
Buffer: array[0..127] of char;
ReadCount: Integer;
ReadSize: Integer;
sOut: string;
i: integer;
begin
try
AProcess := TProcess.Create(nil);
AProcess.CommandLine := 'which ' + Edit1.Text;
AProcess.Options := AProcess.Options + [poUsePipes, poStderrToOutPut];
AProcess.Execute;
while AProcess.Running or (AProcess.Output.NumBytesAvailable > 0) do
begin
if AProcess.Output.NumBytesAvailable > 0 then
begin
sOut := '';
ReadSize := AProcess.Output.NumBytesAvailable;
if ReadSize > SizeOf(Buffer) then
ReadSize := SizeOf(Buffer);
ReadCount := AProcess.Output.Read(Buffer[0], ReadSize);
for i := 0 to ReadCount do
sOut := sOut + Buffer[i];
Memo1.Lines.Add(sOut);
end;
end;
finally
AProcess.Free;
end;