According to Sven Hilscher:
Would be a nice thing - but it dos'nt work ... If you call this GetEnv you get an error: "incompatible type for argument 1 of 'GetEnv'"
It does work with me, on Linux as well as with DJGPP. EMX compiles it without complain but doesn't read the environment variable :-( I have to investigate this ...)
The other way : function GetEnv(name : PChar): PChar; C;
This also not work with the string-conversion from the faq ;-( Every time I get a empty string from "GetEnv". (I tried it under DOS.)
Same as what I get with __CString__ and EMX.
Moment please ... I think I've found a solution:
Function GetEnv (var Name: __CString__ ): pChar; C; ^^^ You get a warning about incompatible pointers, but it works ... Please remove this stupid warning and I'm happy. Yes, I know - I can use {$W-}, but it's not so elegant ;-)
It's getting more and more strange ... this (with "var") should *not* work: __CString__ already denotes a pointer as required by the C library function, and with "var" you pass a pointer to that pointer ... no, the latter was wrong. Your function *expects* a pointer to the pointer, but you pass the pointer itself, so you get the warning, but you pass the correct thing. It works. ;-)
However the correct thing would still be
Function GetEnv ( Name: __CString__ ): pChar; C;
without "var". You are using DJGPP, correct? There it worked on my computer. Try the "GetEnv" from BO5s (no apostrophy: it's a German abbreviation ;) "Tools" Unit. (Must probably isolate it because BO5 is not (yet!) ready to work with DJGPP.) It worked here also.
Peter
e-mail: peter.gerwinski@uni-essen.de home address: D"usseldorfer Str. 35, 45145 Essen, Germany WWW: http://agnes.dida.physik.uni-essen.de/~peter/