我有一个关于Lazarus的项目,我想使用gcc编译源代码,为此我有一个名为TOpenDialog
的{{1}}和一个名为OpenDialog1
的{{1}}。< / p>
我用这段代码打电话给gcc:
TProcess
它编译好(Lazzarus上的项目),但是当我测试它时,通过尝试编译位于AProcess
的源test.c,我在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;
上得到了这个:
'C:\ Documents':没有这样的文件或目录
然后,C:\Documents and Settings\Nathan Campos\Desktop
没有得到空格的完整路径,或者gcc无法在带空格的文件夹中找到它。
有任何建议可以帮助我吗?
答案 0 :(得分:5)
它需要在引号中,因此空格不会绊倒它。像这样:
AProcess.CommandLine := 'gcc.exe "' + OpenDialog1.FileName + '"';
这应该有效。