On Sat, 5 May 2012 14:02:12 +0200 (CEST) "Tomas Hajny" <xhaj...@hajny.biz> wrote:
> On Sat, May 5, 2012 09:22, Michael Van Canneyt wrote: > > On Fri, 4 May 2012, Mattias Gaertner wrote: > >> On Fri, 04 May 2012 17:22:16 +0200 > >> dhkblas...@zeelandnet.nl wrote: > >> > >>> > >>> > >>> I'm creating a script to be executed by instantfpc when I noticed > >>> that paramstr(0) does not reflect the location of the script but the > >>> location of the cached executable. Is there a way to alter this > >>> location > >>> programatically to the script location? Is there an alternative way? > >> > >> instantfpc passes as first parameter the original file name. > >> But execv overrides the first argument with the executed file. AFAIK > >> there is no alternative. > >> > >> You can set an environment variable. > > > > I think the environment variable is the best and easiest shot. > > My proposal is platform independent (i.e. it will work also under Win32, > OS/2, etc., without any changes). Your proposal probably requires starting > the compiled binary using platform specific API functions to run it with a > modified environment rather than using ExecuteProcess which results in > passing the standard parent's environment (changing the current's process > environment may not be supported on all platforms). ExecuteProcess is only a simple utility function. All posix platforms can start a process with another environment. By default they use the current. A const requires to recompile the program every time you call the script from another location. A const in the main script is only accessible by the program, not by the used units. Mattias _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal