Delphi-Quellcode:
function GetSystemLocaleName :
string;
var
DLLWnd :THandle;
localeString : LPWStr;
GetSystemDefaultLocaleName :
function(
const lpLocaleName : LPWStr;
cchLocaleName : integer): integer;
stdcall;
begin
Result := '
';
DLLWnd := LoadLibrary(kernel32);
// <-<< als constante und nicht als String
if DLLWnd > 0
then // ala 'kernel32' sondern denn dann
begin // LoadLibrary('kernel32.dll')
try
@GetSystemDefaultLocaleName := GetProcAddress(DLLWnd, '
GetSystemDefaultLocaleName');
if @GetSystemDefaultLocaleName <>
nil then
begin
localeString := AllocMem(1024);
if GetSystemDefaultLocaleName(localeString, 1024) > 0
then
Begin
Result :=
string(localeString);
// <-<< localeString ist doch ein
End;
// PWideChar also Unicode... *grübel*
end else
MessageBox(Application.Handle, '
Failed to perform GetSystemDefaultLocaleName.',
PChar(Application.Title), MB_ICONERROR
or MB_OK);
finally
FreeLibrary(DLLWnd);
end;
end;
end;
Ich habe mal nachgeschaut, bei meinem XP / SP1 gibt es keine Funktion "GetSystemDefaultLocaleName"
in der Kernel32.