mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-13 07:34:28 +02:00
Merge branch 'env' into 'main'
Use Windows GetEnvironmentVariable(A|W). See merge request freepascal.org/fpc/source!619
This commit is contained in:
commit
0bfcbe80c5
@ -1454,7 +1454,7 @@ end;
|
||||
{$checkpointer off}
|
||||
|
||||
Function GetEnvironmentVariable(Const EnvVar : AnsiString) : AnsiString;
|
||||
|
||||
{$ifdef wince}
|
||||
var
|
||||
oemenvvar, oemstr : RawByteString;
|
||||
i, hplen : longint;
|
||||
@ -1483,9 +1483,16 @@ begin
|
||||
end;
|
||||
FreeEnvironmentStringsA(p);
|
||||
end;
|
||||
{$else wince}
|
||||
var
|
||||
buf : array[0 .. 32767-1] of ansichar;
|
||||
begin
|
||||
SetString(Result,PAnsiChar(buf),GetEnvironmentVariableA(PAnsiChar(EnvVar),PAnsiChar(buf),length(buf)));
|
||||
end;
|
||||
{$endif wince}
|
||||
|
||||
Function GetEnvironmentVariable(Const EnvVar : UnicodeString) : UnicodeString;
|
||||
|
||||
{$ifdef wince}
|
||||
var
|
||||
s, upperenv : Unicodestring;
|
||||
i : longint;
|
||||
@ -1509,6 +1516,13 @@ begin
|
||||
end;
|
||||
FreeEnvironmentStringsW(p);
|
||||
end;
|
||||
{$else wince}
|
||||
var
|
||||
buf : array[0 .. 32767-1] of unicodechar;
|
||||
begin
|
||||
SetString(Result,PUnicodeChar(buf),GetEnvironmentVariableW(PUnicodeChar(EnvVar),PUnicodeChar(buf),length(buf)));
|
||||
end;
|
||||
{$endif wince}
|
||||
|
||||
Function GetEnvironmentVariableCount : Integer;
|
||||
|
||||
@ -1672,13 +1686,11 @@ end;
|
||||
Initialization code
|
||||
****************************************************************************}
|
||||
|
||||
var
|
||||
kernel32dll : THandle;
|
||||
|
||||
Procedure LoadVersionInfo;
|
||||
// and getfreespaceex
|
||||
Var
|
||||
versioninfo : TOSVERSIONINFO;
|
||||
kernel32dll : THandle;
|
||||
begin
|
||||
GetDiskFreeSpaceEx:=nil;
|
||||
versioninfo.dwOSVersionInfoSize:=sizeof(versioninfo);
|
||||
@ -1690,17 +1702,15 @@ begin
|
||||
Move (versioninfo.szCSDVersion ,Win32CSDVersion[1],128);
|
||||
win32CSDVersion[0]:=chr(strlen(PAnsiChar(@versioninfo.szCSDVersion)));
|
||||
kernel32dll:=GetModuleHandle('kernel32');
|
||||
if kernel32dll<>0 then
|
||||
GetDiskFreeSpaceEx:=TGetDiskFreeSpaceEx(GetProcAddress(kernel32dll,'GetDiskFreeSpaceExA'));
|
||||
GetDiskFreeSpaceEx:=TGetDiskFreeSpaceEx(GetProcAddress(kernel32dll,'GetDiskFreeSpaceExA'));
|
||||
if Win32MajorVersion<6 then
|
||||
FindExInfoDefaults := FindExInfoStandard; // also searches SFNs. XP only.
|
||||
if (Win32MajorVersion>=6) and (Win32MinorVersion>=1) then
|
||||
FindFirstAdditionalFlags := FIND_FIRST_EX_LARGE_FETCH; // win7 and 2008R2+
|
||||
// GetTimeZoneInformationForYear is supported only on Vista and newer
|
||||
if (kernel32dll<>0) and (Win32MajorVersion>=6) then
|
||||
if (Win32MajorVersion>=6) then
|
||||
GetTimeZoneInformationForYear:=TGetTimeZoneInformationForYear(GetProcAddress(kernel32dll,'GetTimeZoneInformationForYear'));
|
||||
if (kernel32dll<>0) then
|
||||
GetFinalPathNameByHandle:=TGetFinalPathNameByHandle(GetProcAddress(kernel32dll,'GetFinalPathNameByHandleA'));
|
||||
GetFinalPathNameByHandle:=TGetFinalPathNameByHandle(GetProcAddress(kernel32dll,'GetFinalPathNameByHandleA'));
|
||||
end;
|
||||
|
||||
Function GetAppConfigDir(Global : Boolean) : String;
|
||||
|
Loading…
Reference in New Issue
Block a user