Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FormatSettings for Dummies (https://www.delphipraxis.net/188843-formatsettings-dummies.html)

haentschman 12. Apr 2016 14:32

Delphi-Version: 10 Seattle

FormatSettings for Dummies
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallöle...:P

Ihr müßt mich mal erleuchten. Ich bin zu doof die aktuellen Systemeinstellungen (FormatSettings http://docwiki.embarcadero.com/Libra...FormatSettings) zu laden. :roll:

1. Systemeinstellungen (Bild1)
2. Das was entweder der Record FormatSettings oder eine Variable initialisiert mit TFormatSettings.Create (macht keinen Unterschied ob ohne Länderkennung initialisiert oder mit 'de-DE') liefert :? (Bild2)

Das mit dem Schrägstrich statt dem Dateseparator im Datum ist ja schon ein alter Hut seit XE2. Muß ich mich nun auch selbst um die 24 Stunden Darstellung kümmern (HH statt hh)? Wozu ist das ganze dann gut wenn ich die Einstellungen des Users benutzen will?

PS: Wenn ich das Datumsformat in den Systemeinstellungen ändere, ändern die FormatSettings das brav mit... nur ohne den korrekten Dateseparator und Zeitformat.
PS2: Den W7 Bug bezüglich der Einstellungen habe ich mit dem W10 auch probiert... (Umstellen, neu starten und wieder zurück)

Danke für Info´s bzw. Alternativen 8-)

baumina 12. Apr 2016 14:44

AW: FormatSettings for Dummies
 
Stehen die Einstellungen des Benutzers nicht einfach in der globalen Variable System.SysUtils.FormatSettings?

haentschman 12. Apr 2016 14:48

AW: FormatSettings for Dummies
 
:-D Ja, und das ist genau das was du auf Bild2 siehst... nämlich falsch. :evil:

baumina 12. Apr 2016 14:53

AW: FormatSettings for Dummies
 
Weil du oben was von TFormatSettings.Create geschrieben hast, das hat mich dann wohl verwirrt.

haentschman 12. Apr 2016 14:55

AW: FormatSettings for Dummies
 
:-D nicht schlimm. Du kannst dir ja auch eine Variable mit einem Gebietsschema deiner Wahl, unabhängig vom System, belegen und damit arbeiten. Dafür brauchst du das Create = Initialisierung.

hoika 12. Apr 2016 15:36

AW: FormatSettings for Dummies
 
Hallo,
klick auf "Weitere Einstellungen" und dann auch unten rechts auf "Zurücksetzen".

Wie sieht es danach bei deinem Programm aus?


Heiko

haentschman 12. Apr 2016 15:56

AW: FormatSettings for Dummies
 
:wink: Danke für deine Anteilnahme...

Antwort: Exakt gleich falsch. :evil:

PS: Auch der XX = Vormittags String Zusatz bei 12 Stundenanzeige wird in den FormatSettings nicht übernommen, die Strings dafür schon ... (Im DateTimePicker.Format ist es tt)

Es sieht danach aus als ob für
DateShortFormat, DateLongFormat, TimeShortFormat, TimeLongFormat Standardwerte zurückgegeben werden statt der Einstellungen. Alles Andere wird offensichtlich angepaßt.

Der schöne Günther 12. Apr 2016 16:10

AW: FormatSettings for Dummies
 
Also laut
http://qc.embarcadero.com/wc/qcmain.aspx?d=104942

kann man das für einen Fehler halten, das "/" sei allerdings ein "Meta-Character" für den DateSeparator und nicht als "/"-Zeichen zu verstehen.

himitsu 12. Apr 2016 16:13

AW: FormatSettings for Dummies
 
Das "/" und ":" in den Date-/Time-Strings wird durch die Werte von DateSeparator und TimeSeparator ersetzt, in den Formatfunktionen.

Will man das nicht, dann muß man die in " einfassen.
Delphi-Quellcode:
'hh":"mm":"ss'
macht immer ":", egal was in TimeSeparator drin steht.

haentschman 12. Apr 2016 18:49

AW: FormatSettings for Dummies
 
:wink: Ok, dann stell ich mich mal blöd...

1. Warum kommt hier
Delphi-Quellcode:
Label.Caption := FormatDateTime(Now, FormatSettings.ShortDateFormat)
12/04/2016 statt 12.04.2016 ?
-> weil die FormatStrings nicht "kompatibel" sind.
2. Warum steht im ShortTimeFormat etc. immer hh statt HH wie ausgewählt?
->
Delphi-Quellcode:
FormatDateTime(Now, FormatSettings.ShortTimeFormat)
immer 07:49 statt 19:49 wie ausgewählt?
3. Warum werden beim Auswählen des englischen Formates zwar die Strings für Vormittag / Nachmittag in FormatSettings eingetragen aber kein Platzhalter dafür?
-> Wie soll FormatDatetime wissen ob Vormittag oder Nachmittag?

Mit FormatDateTime geht es nicht. Mit DateTimeToString http://docwiki.embarcadero.com/Libra...teTimeToString geht die Ersetzung des / im Datum. :thumb:
Delphi-Quellcode:
DateTimeToString(Result,
                 FormatSettings.ShortDateFormat + ' - ' + FormatSettings.ShortTimeFormat,
                 Now);
ergibt deutsch 14.04.2016 20:48 und englisch 14/04/2016 20:48 je nach Datumeinstellung
...egal welche Einstellungen für den Zeitanteil gewählt werden, der Zeitanteil ist immer gleich. :? (siehe Punkt 2 + 3)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.
Seite 1 von 4  1 23     Letzte »    

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