Hallo,
Könnte mal kurz eure Hilfe brauchen, einen Bug zu verifizieren, bevor ich ihn ins
QC stelle. Ich habe nur XE, und wenn ich ihn nicht als auch in XE3 vorhanden einstelle, passiert meiner Erfahrung nach eh nichts damit...
Es geht um das russische LongDateFormat. Das Betriebssystem gibt das korrekt wieder, aber die SysUtils verpfuscht in FixDateSeparator ein Zeichen. Ausgabe des Testprogrammes unten unter Delphi XE:
Zitat:
dddddd: 10 Октябрь 2012 г/
LongDateFormat: d MMMM yyyy 'г/'
EnumDateFormats: d MMMM yyyy 'г.'
Klar ist die
RTL-Version (ersten beiden Zeilen) falsch und unterscheidet sich von der
API-Version (dritte Zeile).
Delphi-Quellcode:
function EnumDateFormatsProc(lpDateFormatString: PChar): boolean; stdcall;
begin
Form1.memo2.Lines.Add('EnumDateFormats: ' + lpDateFormatString);
end;
procedure TForm1.FormShow(Sender: TObject);
var
fs: TFormatSettings;
i: integer;
sLocale: string;
l: LCID;
begin
for i := 0 to 2 do begin
case i of
0: sLocale := 'en-US';
1: sLocale := 'de-DE';
2: sLocale := 'ru-RU';
end;
fs := TFormatSettings.Create(sLocale);
l := LocaleNameToLCID(PChar(sLocale), 0);
memo2.Lines.Add(sLocale);
memo2.Lines.Add(IntToHex(l, 8));
memo2.Lines.Add('dddddd: ' + FormatDateTime('dddddd', Now, fs));
memo2.Lines.Add('LongDateFormat: ' + fs.LongDateFormat);
EnumDateFormats(@EnumDateFormatsProc, l, DATE_LONGDATE);
memo2.Lines.Add('');
end;
end;