3

gcc を使用してソースをコンパイルしたい Lazarus のプロジェクトがTOpenDialogありOpenDialog1ます。TProcessAProcess

次のコードで gcc を呼び出します。

procedure TFormMain.btCompileClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    AProcess := TProcess.Create(nil);
    try
      AProcess.CommandLine := 'gcc.exe ' + OpenDialog1.FileName;
      AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
      AProcess.Execute;
      OutputMemo.Lines.BeginUpdate;
      OutputMemo.Lines.Clear;
      OutputMemo.Lines.LoadFromStream(AProcess.Output);
      OutputMemo.Lines.EndUpdate;
    finally
      AProcess.Free;
    end;
  end;
end;

正常にコンパイルされます (Lazzarus のプロジェクト) が、テスト中に にあるソース test.c をコンパイルしようとすると、次のC:\Documents and Settings\Nathan Campos\DesktopようになりましたOutputMemo

'C:\Documents': そのようなファイルまたはディレクトリはありません

次に、OpenDialog1スペースを含むフルパスを取得していないか、gcc がスペースを含むフォルダーでパスを見つけることができません。

これについて私を助ける提案はありますか?

4

1 に答える 1

5

スペースでつまずかないように、引用符で囲む必要があります。このように:

AProcess.CommandLine := 'gcc.exe "' + OpenDialog1.FileName + '"';

それはうまくいくはずです。

于 2009-12-29T02:57:57.553 に答える