Zitat von
holliesoft:
Interessant wäre noch zu wissen, ob auch Anwendungen betroffen sind, die mit aktuelleren Delphi-Versionen (2007-2010) kompiliert worden sind.
Zitat von
sh17:
Interessant - kannte ich noch nicht
Ich och nicht, aber da ich mich nicht auf bestimmte Systemeinstellungen einschränke, hab ich sowas auch nie gesucht.
Ich finde es eh etwas "schlimm", wenn man in seinem Programm den "Willen" des Nutzers ignoriert und vom System abweichende Einstellungen nutzt, bzw. nur bestimmte Einstellungen erlaubt, womit dann das Programm nicht auf allen Systemen läuft, wie man hier am Thema ja sehr gut erkennen kann.
ShortDateFormat := TranslateDateFormat(GetLocaleStr(DefaultLCID, LOCALE_SSHORTDATE, 'm/d/yy'));
und
Delphi-Quellcode:
function TranslateDateFormat(const FormatStr: string): string;
var
I: Integer;
L: Integer;
CalendarType: CALTYPE;
RemoveEra: Boolean;
begin
I := 1;
Result := '';
CalendarType := StrToIntDef(GetLocaleStr(GetThreadLocale,
LOCALE_ICALENDARTYPE, '1'), 1);
if not (CalendarType in [CAL_JAPAN, CAL_TAIWAN, CAL_KOREA]) then
begin
...
Delphi-Quellcode:
function GetLocaleStr(Locale, LocaleType: Integer; const Default: string): string;
{$IFDEF MSWINDOWS}
var
L: Integer;
Buffer: array[0..255] of Char;
begin
L := GetLocaleInfo(Locale, LocaleType, Buffer, Length(Buffer));
if L > 0 then SetString(Result, Buffer, L - 1) else Result := Default;
end;
{$ENDIF}
{$IFDEF LINUX}
begin
Result := Default;
end;
{$ENDIF}
GetLocaleStr =
GetLocaleInfo
Delphi nutzt hier fast direkt die
WinAPI.
Nun gibt es hier 2 Fälle entweder GetLocaleInfo liefert keinen String und es wird das Default genutzt oder GetLocaleInfo liefert wirklich einen anderen Formatstring.
In beiden Fällen sollte Lazarus ähnlich arbeiten und denmach auch ähnlich reagieren.