From da892705e08bd82a5858d9209575430892daaa82 Mon Sep 17 00:00:00 2001 From: Rika Ichinose Date: Thu, 14 Mar 2024 22:44:53 +0300 Subject: [PATCH 1/2] Use Windows GetEnvironmentVariable(A|W). --- rtl/win/sysutils.pp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/rtl/win/sysutils.pp b/rtl/win/sysutils.pp index 1581eb4c23..9443ae69d8 100644 --- a/rtl/win/sysutils.pp +++ b/rtl/win/sysutils.pp @@ -1450,7 +1450,7 @@ end; {$checkpointer off} Function GetEnvironmentVariable(Const EnvVar : AnsiString) : AnsiString; - +{$ifdef wince} var oemenvvar, oemstr : RawByteString; i, hplen : longint; @@ -1479,9 +1479,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; @@ -1505,6 +1512,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; From 0361975d2d6be2ae586803856b141fe73129c5df Mon Sep 17 00:00:00 2001 From: Rika Ichinose Date: Thu, 14 Mar 2024 22:49:29 +0300 Subject: [PATCH 2/2] =?UTF-8?q?GetModuleHandle('kernel32')=20can=E2=80=99t?= =?UTF-8?q?=20fail.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rtl/win/sysutils.pp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/rtl/win/sysutils.pp b/rtl/win/sysutils.pp index 9443ae69d8..7fe3c285e8 100644 --- a/rtl/win/sysutils.pp +++ b/rtl/win/sysutils.pp @@ -1682,13 +1682,11 @@ end; Initialization code ****************************************************************************} -var - kernel32dll : THandle; - Procedure LoadVersionInfo; // and getfreespaceex Var versioninfo : TOSVERSIONINFO; + kernel32dll : THandle; begin GetDiskFreeSpaceEx:=nil; versioninfo.dwOSVersionInfoSize:=sizeof(versioninfo); @@ -1700,17 +1698,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;