TOpenDialog和空间

Nat*_*pos 3 delphi directory spaces lazarus

我有一个关于Lazarus的项目,我想用gcc编译一个源代码,为此我有一个TOpenDialog被叫OpenDialog1和一个TProcess被调用的AProcess.

我用这段代码调用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;
Run Code Online (Sandbox Code Playgroud)

它编译好(Lazzarus上的项目),但是当我测试它时,通过尝试编译源test.c,位于C:\Documents and Settings\Nathan Campos\Desktop,我得到了这个OutputMemo:

'C:\ Documents':没有这样的文件或目录

然后,OpenDialog1没有得到空格的完整路径,或者gcc无法在带空格的文件夹上找到它.

有什么建议可以帮助我吗?

Mas*_*ler 5

它需要在引号中,所以空格不会绊倒它.像这样:

AProcess.CommandLine := 'gcc.exe "' + OpenDialog1.FileName + '"';
Run Code Online (Sandbox Code Playgroud)

这应该工作.