el stamatakos wrote:
>
> Hi All,
> Not sure if I sent this already.
>
> I am trying to run a command using the TProcess class. I have included it in
> the uses process.
>
> I have the code below
>
> procedure TmainForm.StartCDS();
> cmd:string;
> AProcess:Tprocess;
> begin
> Aprocess:=TProcess.Create(nil);
>
> cmd:='cd '+Dir+'/des/'+'v'+Rev+' ;startCDS.csh';
> AProcess.CommandLine:=cmd;
> Aprocess.Options:=Aprocess.Options+[poWaitOnExit];
> AProcess.Execute;
> AProcess.Free;
> end;
>
> I keep getting an error Project raised Exception class 'EProcess' with
> message Executable not found ""
>
> Not sure what I am doing wrong.
>
I see a couple of problems.
First: TProcess is not a shell/terminal. So using things like "|", ">",
"<", ";" etc mean nothing.
Second: As a result of the first reason, trying to execute a script (I
assume that "startCDS.csh" is a script) will not work since it's not
truly executable. You need to execute the interpreter with the script as
it's argument.
Something like this should work:
procedure TmainForm.StartCDS();
var
cmd:string;
AProcess:Tprocess;
begin
AProcess:=TProcess.Create(nil);
SetCurrentDir(Dir + 'des/v' + Rev);
cmd:='/bin/sh startCDS.csh'; // is it a csh script or will sh work?
AProcess.CommandLine:=cmd;
Aprocess.Options:=Aprocess.Options+[poWaitOnExit];
AProcess.Execute;
AProcess.Free;
end;
Happy coding,
Andrew
_________________________________________________________________
To unsubscribe: mail [EMAIL PROTECTED] with
"unsubscribe" as the Subject
archives at http://www.lazarus.freepascal.org/mailarchives