Hi, Can anybody see if there is something wrong with the code shown below. The code is copied from one of my earlier projects where I call the FPC compiler and it worked just fine in that project.
In the work I'm doing now, I'm calling the Delphi Command Line Compiler, and made a few minor tweaks to the code, but this method never seems to return when Delphi command line compiler is called, and I don't see any output. If I call other utilities (eg: Git etc) then I do see output and it works as expected. It's just the Delphi Command Line Compiler that now seems to be giving troubles. I would really appreciate it is anybody could spare a moment. Many thanks. I marked two areas with "// ???" where I am unsure if I'm doing the right thing. ================================== function TBuildDelphiProject.RunTProcess(const Binary: string; args: TStrings): boolean; const BufSize = 1024; var p: TProcess; Buf: string; Count: integer; i: integer; LineStart: integer; OutputLine: string; begin p := TProcess.Create(nil); try p.Executable := Binary; // ??? Is poWaitOnExit needed here, it is called later down the code p.Options := [poUsePipes, poStdErrToOutPut, poWaitOnExit]; // p.CurrentDirectory := ExtractFilePath(p.Executable); p.ShowWindow := swoShowNormal; // ??? Is this needed? p.Parameters.Assign(args); DoLog(etInfo,'Running command "%s" with arguments "%s"',[p.Executable, p.Parameters.Text]); p.Execute; { Now process the output } OutputLine:=''; SetLength(Buf,BufSize); repeat if (p.Output<>nil) then begin Count:=p.Output.Read(Buf[1],Length(Buf)); end else Count:=0; LineStart:=1; i:=1; while i<=Count do begin if Buf[i] in [#10,#13] then begin OutputLine:=OutputLine+Copy(Buf,LineStart,i-LineStart); writeln(OutputLine); OutputLine:=''; if (i<Count) and (Buf[i+1] in [#10,#13]) and (Buf[i]<>Buf[i+1]) then inc(i); LineStart:=i+1; end; inc(i); end; OutputLine:=Copy(Buf,LineStart,Count-LineStart+1); until Count=0; if OutputLine <> '' then writeln(OutputLine); p.WaitOnExit; Result := p.ExitStatus = 0; if Not Result then Writeln('Command ', p.Executable ,' failed with exit code: ', p.ExitStatus); finally FreeAndNil(p); end; end; ================================== Regards, Graeme -- fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal http://fpgui.sourceforge.net/ My public PGP key: http://tinyurl.com/graeme-pgp _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal