[fpc-pascal]Changing the directory of the invoking shell

XHajT03 at mbox.vol.cz XHajT03 at mbox.vol.cz
Sat May 18 08:47:48 CEST 2002

Date sent:      	Fri, 17 May 2002 09:33:10 -0700
From:           	Rich Pasco <pasco at acm.org>
To:             	fpc-pascal at deadlock.et.tudelft.nl
Subject:        	[fpc-pascal]Changing the directory of the invoking shell
Send reply to:  	fpc-pascal at deadlock.et.tudelft.nl

> Can a Free Pascal program, compiled as a Win32 console application,
> change the current directory of the invoking shell?  A Borland Pascal
> program can.

 BP program can do it under DOS, because both the shell and your 
program operate in one environment (one address space). This isn't 
true for Win32 (and other multi-tasking systems) - each program has 
its own address space, and the daughter process just inherits the 
settings of its parent at the moment of it's launch (but not vice 
versa, of course).

> and indeed, if I compile CHD.PAS with Borland Pascal for DOS (16-bit)
> that is exacty what happens when I invoke it under the Windows 2000
> shell CMD.EXE.
> However, if I compile CHD.PAS under Free Pascal for Win32, then when I
> invoke it (also under CMD.EXE), it produces:
>   C:\>CHD
>   C:\>
> In other words, it seems that while CHD may successfully chenge the
> current directory for its own internal purposes, that change is not
> propgated back to the shell from which it was invoked, as I want. Can
> I remedy that?  How?

 I suspect you can't. The reason why it works for DOS programs is a 
special hack for these within M$ WinXX; so it's a feature of M$ 
WinXX, not of either of the mentioned compilers. It _might_ work as 
you expect if you compile your program for GO32v2 target (but beware: 
you might encounter problems with GO32v2 programs running under 
Win2000 - there should be something about this in our FAQ).


More information about the fpc-pascal mailing list