So klappt es, vielen Dank!
Hier nochmal für HolgerX wegen fehlender Konstanten zum nachvollziehen:
Delphi-Quellcode:
function GetLocaleInfoEx(lpLocaleName: PWideChar; LCType: LCTYPE; lpLCData: PWideChar; cchData: Integer): Integer; stdcall; external kernel32 name 'GetLocaleInfoEx';
procedure DoJob;
const
LOCALE_NAME_SYSTEM_DEFAULT = '!x-sys-default-locale'; // <- das bringt bei mir einen Leerstring
LOCALE_NAME_USER_DEFAULT = $00; // <- das funktioniert
var
lpLocaleName: PWideChar; LLCType: LCTYPE;
lpLCData: PWideChar; cchData, ReturnValue: Integer;
DataValue: array of WideChar;
DataString: string;
begin
lpLocaleName := PChar(LOCALE_NAME_USER_DEFAULT);
LLCType := LOCALE_SSHORTDATE;
lpLCData := nil;
cchData := 0;
cchData := GetLocaleInfoEx(lpLocaleName, LLCType, lpLCData, cchData);
if cchData = 0 then
RaiseLastOSError
else
begin
SetLength(DataValue, cchData);
lpLCData := @DataValue[0];
cchData := GetLocaleInfoEx(lpLocaleName, LLCType, lpLCData, cchData);
end;
SetString(DataString, PChar(@DataValue[0]), Length(DataValue));
ShowMessage(DataString);
end;
Aber das Ergebnis bleibt auch hier = dd.MM.yyyy
also irgendwie alles das gleiche nur eine andere Möglichkeit