Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Bug in XE-RTL bzgl. russischem LongDateFormat. (https://www.delphipraxis.net/170928-bug-xe-rtl-bzgl-russischem-longdateformat.html)

CCRDude 10. Okt 2012 15:24

Bug in XE-RTL bzgl. russischem LongDateFormat.
 
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;

greenmile 12. Okt 2012 10:34

AW: Bug in XE-RTL bzgl. russischem LongDateFormat.
 
XE3:

en-US
00000409
dddddd: Friday, October 12, 2012
LongDateFormat: dddd, MMMM dd, yyyy
EnumDateFormats: dddd, MMMM dd, yyyy

de-DE
00000407
dddddd: Freitag, 12. Oktober 2012
LongDateFormat: dddd, d/ MMMM yyyy
EnumDateFormats: dddd, d. MMMM yyyy

ru-RU
00000419
dddddd: 12 Октябрь 2012 г/
LongDateFormat: d MMMM yyyy 'г/'
EnumDateFormats: d MMMM yyyy 'г.'

CCRDude 15. Okt 2012 07:37

AW: Bug in XE-RTL bzgl. russischem LongDateFormat.
 
Vielen Dank dafür :)

Habe den QC-Eintrag jetzt schreiben können :)

Stevie 15. Okt 2012 08:50

AW: Bug in XE-RTL bzgl. russischem LongDateFormat.
 
Zitat:

Zitat von CCRDude (Beitrag 1187045)
Habe den QC-Eintrag jetzt schreiben können :)

Ich musste echt lachen, als ich gesehen habe, was das QC aus den russischen Zeichen gemacht hat :wall:

himitsu 15. Okt 2012 09:10

AW: Bug in XE-RTL bzgl. russischem LongDateFormat.
 
Das QC ist vermutlich immernoch in D7 geschrieben und kann demnach kein Russisch (oder die BDE dahinter) :stupid:

Die haben ja noch nimma [delphi]-Tags. :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz