On Thu, Mar 29, 2012 at 4:17 AM, Sven Barth <pascaldra...@googlemail.com> wrote: > > Am 29.03.2012 05:31, schrieb Marcos Douglas: > >> On Wed, Mar 28, 2012 at 6:40 PM, Michael Van Canneyt >> <mich...@freepascal.org> wrote: >>> >>> >>> >>> >>> On Wed, 28 Mar 2012, Marcos Douglas wrote: >>> >>>> Hi, >>>> >>>> I think SysUtils.GetEnvironmentVariable has a problem. >>>> I tried to use GetEnvironmentVariable on WinXP and Win7. Sometimes >>>> works on WinXP, others not. But never worked on Win7. >>>> >>>> I asked some friends to test on Linux and did not work too. >>>> >>>> My FPC is 2.6.1 rev 20648 on WinXP. >>>> >>>> The test: >>>> 1- Create a Environment Variable (eg: FOO). >>>> 2- Try this: >>>> >>>> procedure TForm1.Button1Click(Sender: TObject); >>>> begin >>>> ShowMessage(SysUtils.GetEnvironmentVariable('FOO')); >>>> end; >>>> >>> >>> Just tested. >>> >>> Works fine on linux, provided the environment variable is defined BEFORE >>> the program is started, and in the terminal that starts the program. >>> (perfectly normal on linux) >>> >>> So if you run the program under the IDE, the environment variable must >>> be >>> defined in the session that starts the IDE, BEFORE the ide is started. >>> >>> Cannot comment on Windows, but I would be very surprised if it does not >>> work, since many of our programs rely on it. >>> >>> There again, be careful WHEN you define the environment variable. Before >>> or after starting the application. >> >> >> I know that I have to define the environment variable before or after >> starting the application or IDE. >> As I said, works in WinXP... but I had a little problem with a client >> using Win7 so, I talked about this on lazarus-br list and asked to >> somebody do the test on Win7 and they said the test did not work so, I >> wrote here. > > > You could use Process Explorer to inspect the Environment of your process. > > That being said I just tested the following program: > > === source begin === > > program envtest; > > uses > SysUtils; > > var > i: LongInt; > begin > if ParamCount = 0 then > Writeln('Usage: ', ExtractFileName(ParamStr(0)), ' ENVVAR [ENVVAR > [...]]') > else begin > for i := 1 to ParamCount do > Writeln(ParamStr(i), ' = ', GetEnvironmentVariable(ParamStr(i))); > end; > end. > > === source end === > > I tested it in a CMD session on a Windows 7: > > === output begin === > > P:\tests\oneshots>set FOO=bar > > P:\tests\oneshots>.\envtest.exe FOO > FOO = bar > > === output end === > > Please note that in "cmd" the following are different: > > set FOO=bar > => "FOO" -> "bar" > set FOO = bar > => "FOO " -> " bar" > set FOO= bar > => "FOO" -> " bar" > set FOO =bar > => "FOO " -> "bar" > > Regards, > Sven
The application is installed and the system variable is created. The application and others process should be use this variable just calling SysUtils.GetEnvironmentVariable. Marcos Douglas _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal