2009-12-29 4 views
3

저는 gcc를 사용하여 소스를 컴파일하고자하는 Lazarus 프로젝트를 가지고 있습니다.이를 위해 TOpenDialogOpenDialog1이고 TProcessAProcess입니다.TOpenDialog and 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; 

나는 소스 TEST.C 컴파일을 시도함으로써, 테스트 때 그것은 (Lazzarus에서 프로젝트) 확인 컴파일하지만, 그이 C:\Documents and Settings\Nathan Campos\Desktop에 있습니다 :

는이 코드로 GCC를 호출 나는 OutputMemo에이있어 :

'C : \ 문서'

그런 다음 해당 파일이나 디렉토리, OpenDialog1을 전 공백으로 전체 경로를 얻지 못하거나 gcc가 공백이있는 폴더에서 찾을 수 없습니다.

나를 도울 제안이 있습니까?

답변

5

공백이 올라 가지 않도록 따옴표로 묶어야합니다. 이렇게하면 다음과 같습니다.

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

그래야합니다.

+0

대단히 감사합니다. 나는 이것에 대해 잊어 버렸습니다, 당신의 시간을 잊어 버려서 미안 해요 ** : (** –