On 10/3/06, Michael Van Canneyt <[EMAIL PROTECTED]> wrote:

On Tue, 3 Oct 2006, Adrian Maier wrote:

> On 10/3/06, Michael Van Canneyt <[EMAIL PROTECTED]> wrote:
> > > Any idea how should i quote the arguments so that they would be properly
> > > treated by TProcess?
> >
> > You can't. The following lines (line 107 of unix/process.inc)
> > Result:=StringReplace(Result,'"','',[rfReplaceAll]);
> > Result:=StringReplace(Result,'''','',[rfReplaceAll]);
> > Will strip all quotes inside a quoted string.
> >
> > Obviously, this is a bug.
>
> It's a painful one.  I was hoping to switch to TProcess instead of shell (
> which isn't  cross-platform )  ...

The bug won't occur on windows :)

I will see about fixing it. Could you please post a bug report so it won't
be forgotten.

Ok.

> > > 3.  The code returned by the called program can be got with
> > > TProcess.ExitCode , right ?   I have a situation in which a program  1
> > > , but  TProcess.ExitCode is 0.   Therefore it's impossible to detect
> > > the failure.
> >
> > That can be if the program exited because of a signal.
>
> I'm not sure if this was the case - I'll have to investigate.
> Anyway, is it possible to detect this situation ?

Well, first of all you should do a 'IsRunning' (or running) before checking
the exitcode.

I'm using the poWaitOnExit  option,  so my program doesn't waits
until the external process ends.   All I need is to know if the
external process ended successfully or not .

Only after that you can check the exit code. About the signalling,
we'd need to extend TProcess for that.

I understand.


Cheers,
Adrian Maier
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to