代码之家  ›  专栏  ›  技术社区  ›  Nathan Campos

过程的输出

  •  0
  • Nathan Campos  · 技术社区  · 15 年前

    我正在用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;
    

    但是我想在另一个表单上显示gcc的日志(输出)( OutputForm ,只有一个tmemo( OutputMemo )

    我该怎么做?

    1 回复  |  直到 15 年前
        1
  •  2
  •   mghie    15 年前

    你可以使用 Output 来自的属性 TProcess 对象。

    尝试此代码

    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;