I have a project on Lazarus that I want to compile a source using gcc, for this I ha开发者_高级运维ve a TOpenDialog
called OpenDialog1
and a TProcess
called AProcess
.
I call gcc with this code:
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;
It compiles ok(the project on Lazzarus), but when I was testing it, by trying to compile the source test.c, that is located at C:\Documents and Settings\Nathan Campos\Desktop
, I got this on OutputMemo
:
'C:\Documents': No such file or directory
Then, OpenDialog1
isn't getting the full path with the spaces, or gcc can't locate it on the folder with spaces.
Any suggestion to help me on this?
It needs to be in quotes so spaces won't trip it up. So like this:
AProcess.CommandLine := 'gcc.exe "' + OpenDialog1.FileName + '"';
That should work.
精彩评论