Als erstes brauchst du die Funktion von Windows.
Zitat:
The GetEnvironmentVariable function retrieves the value of the specified variable from the environment block of the calling process. The value is in the form of a null-terminated string of characters.
DWORD GetEnvironmentVariable(
LPCTSTR lpName, // address of environment variable name
LPTSTR lpBuffer, // address of buffer for variable value
DWORD nSize // size of buffer, in characters
);
Parameters
lpName
Points to a null-terminated string that specifies the environment variable.
lpBuffer
Points to a buffer to receive the value of the specified environment variable.
nSize
Specifies the size, in characters, of the buffer pointed to by the lpBuffer parameter.
Return Values
If the function succeeds, the return value is the number of characters stored into the buffer pointed to by lpBuffer, not including the terminating null character.
If the specified environment variable name was not found in the environment block for the current process, the return value is zero.
If the buffer pointed to by lpBuffer is not large enough, the return value is the buffer size, in characters, required to hold the value string and its terminating null character.
Windows.pas:
Delphi-Quellcode:
function GetEnvironmentVariable(lpName: PChar; lpBuffer: PChar; nSize: DWORD): DWORD; stdcall; overload;
{$EXTERNALSYM GetEnvironmentVariable}
//(c) by Borland
Sysutils.pas:
Delphi-Quellcode:
function GetEnvironmentVariable(const Name: string): string;
var
Len: integer;
begin
Result := '';
Len := GetEnvironmentVariable(PChar(Name), nil, 0);
if Len > 0 then
begin
SetLength(Result, Len - 1);
GetEnvironmentVariable(PChar(Name), PChar(Result), Len);
end;
end;
//(c) by Borland
Natürlich reicht auch die erste Deklaration, wenn du kein Problem mit PChar hast.