Einige hier scheinen die Problemstellung einfach nicht richtig zu verstehen. Vielleicht solltest du einen konkreten Test-Case machen, der genau zeigt, was du haben willst.
So wie ich das sehe, handelt es sich hier eher um ein Übersetzungsproblem und nicht um die länderspezifische Darstellung eines Datums.
en-US: 'mm/dd/yyyy'
de-de: 'TT.MM.JJJJ'
Gefragt ist also nicht der tatsächliche Format-String, der z.B. für FormatDate verwendet wird, sondern der Hinweistext zur Eingabe eines Datumswerts.
Der Uwe hat's verstanden, es geht allein um den Hinweis Text. Wie er in den Windows Einstellungen auch zu sehen ist.
Da bist Du in eine kleine Windows-Falle gatappt!
Ich vermute, dass dein Rechner entweder ein auf deutsch umgestelltes englisches Windows ist, oder dass hier der Windows 7 EN auf 10 Upgrade-Bug zugeschlagen hat!
Nehme mal statt LOCALE_SYSTEM_DEFAULT das LOCALE_USER_DEFAULT
Delphi-Quellcode:
var
FmtSet: TFormatSettings;
begin
{$WARN SYMBOL_PLATFORM OFF}
FmtSet := TFormatSettings.Create(LOCALE_USER_DEFAULT);
{$WARN SYMBOL_PLATFORM ON}
ShowMessage(FmtSet.ShortDateFormat);
Denn mit LOCALE_SYSTEM_DEFAULT werden die
OS-Einstellungen gelesen, mit LOCALE_USER_DEFAULT die User-Einstellungen, welche dir auch von Windows angezeigt werden...
Und ob ich jetzt 'LOCALE_SYSTEM_DEFAULT' oder 'LOCALE_USER_DEFAULT' verwende spielt keine Rolle ich bekomme immer nur das interne Format (z.B. dd/MM/yyyy) zurück. Bei dem Windows handelt es sich um Windows 7 Ultimate, welches auf deutsch eingestellt ist.