2009-12-29 52 views
3

我對拉撒路一個項目,我想編譯使用gcc源,爲了這個,我有一個名爲TOpenDialogOpenDialog1一個名爲AProcessTProcessTOpenDialog和Spaces

我呼籲海合會與此代碼:

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; 

它編譯OK(好Lazzarus項目),但是當我在測試它,試圖編譯源test.c的,是位於C:\Documents and Settings\Nathan Campos\Desktop ,我得到這個在OutputMemo

'C:\文件':沒有這樣的文件或目錄

然後,OpenDialog1我無法獲得空格的完整路徑,或者gcc無法在空格處找到它。

任何建議可以幫助我嗎?

回答

5

它需要在引號中,以便空格不會將其絆倒。所以像這樣:

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

這應該工作。

+0

非常感謝!我已經忘了這件事,很抱歉讓你放鬆你的時間**:(** – 2009-12-29 14:32:17