From 2c81b44b1c9a5581dd20c7d6f6c49394f930cc13 Mon Sep 17 00:00:00 2001 From: Ondrej Pokorny Date: Wed, 11 Aug 2021 11:06:17 +0200 Subject: [PATCH] win: fix default ShortDateFormat and LongDateFormat --- rtl/win/sysutils.pp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/rtl/win/sysutils.pp b/rtl/win/sysutils.pp index 5bba9ce7b6..6f2bbccaba 100644 --- a/rtl/win/sysutils.pp +++ b/rtl/win/sysutils.pp @@ -1197,6 +1197,21 @@ begin end; procedure GetLocaleFormatSettings(LCID: Integer; var FormatSettings: TFormatSettings); + function FixSeparator(const FromSeparator, ToSeparator: Char; const Format: string): string; + var + R: PChar; + begin + if (Format='') or (FromSeparator=ToSeparator) then + Exit(Format); + Result := Copy(Format, 1); + R := PChar(Result); + while R^<>#0 do + begin + if R^=FromSeparator then + R^:='/'; + Inc(R); + end; + end; var HF : Shortstring; LID : Windows.LCID; @@ -1218,8 +1233,8 @@ begin LongDayNames[I]:=GetLocaleStr(LID,LOCALE_SDAYNAME1+Day,LongDayNames[i]); end; DateSeparator := GetLocaleChar(LID, LOCALE_SDATE, '/'); - ShortDateFormat := GetLocaleStr(LID, LOCALE_SSHORTDATE, 'm/d/yy'); - LongDateFormat := GetLocaleStr(LID, LOCALE_SLONGDATE, 'mmmm d, yyyy'); + ShortDateFormat := FixSeparator(DateSeparator, '/', GetLocaleStr(LID, LOCALE_SSHORTDATE, 'm/d/yy')); + LongDateFormat := FixSeparator(DateSeparator, '/', GetLocaleStr(LID, LOCALE_SLONGDATE, 'mmmm d, yyyy')); { Time stuff } TimeSeparator := GetLocaleChar(LID, LOCALE_STIME, ':'); TimeAMString := GetLocaleStr(LID, LOCALE_S1159, 'AM');