0

私はLazarusを使用して、gccを実行するプログラムを開発しています。

var
AProcess: TProcess;

begin
if SaveDialog1.Execute then
AProcess := TProcess.Create(nil);
AProcess.CommandLine := 'gcc.exe ' + SaveDialog1.FileName + ' -o ' TextField23.Text;
AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
AProcess.Execute;
AProcess.Free;
end;

OutputFormしかし、gccのlog(output)を、TMemo()しかない別のForm()に表示したいと思いますOutputMemo

どうすればいいですか?

4

1 に答える 1

2

TProcessオブジェクトのOutputプロパティを使用できます。

このコードを試してください

var
  AProcess: TProcess;
begin
  if SaveDialog1.Execute then begin
    AProcess := TProcess.Create(nil);
    try
      AProcess.CommandLine := 'gcc.exe ' + SaveDialog1.FileName + ' -o '
        + TextField23.Text;
      AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
      AProcess.Execute;

      OutputForm.OutputMemo.Lines.BeginUpdate;
      //OutputForm.OutputMemo.Lines.Clear;
      OutputForm.OutputMemo.Lines.LoadFromStream(AProcess.Output);
      OutputForm.OutputMemo.Lines.EndUpdate;
    finally
      AProcess.Free;
    end;
  end;
end;
于 2009-12-28T13:39:39.047 に答える