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

Reply via email to