![]() |
AW: FormatSettings for Dummies
Wenn ich einen Blick in die SysUtils werfe, sehe ich dass es 'HH' als Formatierung nicht gibt. Es gibt nur 'hh', wenn man keine 24-Stundenanzeige will, wird das über am/pm geregelt.
Zitat:
|
AW: FormatSettings for Dummies
:P Moin und danke....
Das weiß ich alles. Ich will aber wissen wie das Zeitformat, was der Nutzer eingestellt hat, aussieht und anwenden. Primär geht es nur um die in FormatSettings gelieferten Werte. Die sind definitiv beim Zeitformat falsch. :? Du kannst einstellen was du willst. Der Formatstring für die Zeit ist immer gleich. Ich habe mir schon eine Funktion gebaut die die "Unzulänglichkeiten" ausbügelt. Das kann es doch aber nicht sein. |
AW: FormatSettings for Dummies
Dann lies dich in die entsprechenden API-Funktionen ein und bau dir das so wie du das haben willst.
Kleiner Tipp: Da hat sich über die Zeit von Windows XP über Vista und 7 ... etwas (einiges) getan, was du auch alles berücksichtigen musst. Mal sehen auf welchen Ansatz du kommst. Mit ![]() |
AW: FormatSettings for Dummies
Danke...:P
Zitat:
Stelle mal bitte in deinen Regionseinstellungen das kurze Zeitformat auf HH:mm Uhr (Vorlage). Dann zeige mir wie du mit Hilfe der Formatsettings das 13:48 Uhr (so wollte es ja der Nutzer) ohne zusätzliche Korrekturen in ein Label schreibst. Ich will doch nur bestätigt haben, das auch bei Euch die Zeitformatierung in den FormatSettings falsch ist. :? |
AW: FormatSettings for Dummies
Liste der Anhänge anzeigen (Anzahl: 1)
Klar, das wird bei jedem so sein.
|
AW: FormatSettings for Dummies
Die
Delphi-Quellcode:
sind dafür da, dass Delphi mit diesen arbeiten kann und zwar auf jeder Plattform. Somit sind diese Einstellungen dort entsprechend gleichgeschaltet.
FormatSettings
Um damit zu arbeiten verwendet man ganz simpel die Funktionen, die optional die FormatSettings als Argument anbieten. Alles, was nach Datum/Zeit riecht wird intern von
Delphi-Quellcode:
(nur intern verfügbar) in einen String umgewandelt.
System.SysUtils.DateTimeToString()
Wenn du wissen willst, was jetzt explizit bei dem OS an EInstellungen original drin stehen, dann musst du das über den Weg auslesen, den das OS zur Verfügung stellt. Eigentlich nicht so schwer zu verstehen ... |
AW: FormatSettings for Dummies
Nur mal so gesagt:
Zitat:
Das hier schon
Delphi-Quellcode:
Hier mal ein kleines Beispielprogramm, wo man auch live die Änderungen sehen kann
Label1.Caption := FormatDateTime( FormatSettings.ShortDateFormat, Now );
Delphi-Quellcode:
unit Unit1;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.AppEvnts; type TForm1 = class( TForm ) Label1: TLabel; ApplicationEvents1: TApplicationEvents; { OnSettingChange = ApplicationEvents1SettingChange } procedure ApplicationEvents1SettingChange(Sender: TObject; Flag: Integer; const Section: string; var Result: Integer); procedure FormShow(Sender: TObject); private procedure PresentData; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ApplicationEvents1SettingChange(Sender: TObject; Flag: Integer; const Section: string; var Result: Integer); begin PresentData; end; procedure TForm1.FormShow(Sender: TObject); begin PresentData; end; procedure TForm1.PresentData; begin Label1.Caption := FormatDateTime( FormatSettings.ShortDateFormat, Now ); end; end. |
AW: FormatSettings for Dummies
Zitat:
Zitat:
Delphi-Quellcode:
...jetzt nimmst du mal ShortTimeFormat und versuchst in der Region Englisch mit 12 Std. Anzeige und AM/PM einzustellen. Alternativ kannst du auch unser 24 Stundenformat probieren... es kommt immer 12 Std.Format ohne AM/PM raus.:wink:
procedure TForm1.PresentData;
begin Label1.Caption := FormatDateTime( FormatSettings.ShortDateFormat, Now ); end; Wir brechen hier ab. Ich habe mir das selbst für unsere Zwecke korrigiert. Danke an alle... |
AW: FormatSettings for Dummies
Beim Zeitformat hat Emba allerdings geschlafen, das wird nicht so übernommen, wie in den Windows-Einstellungen eingetragen.
Delphi-Quellcode:
Da bleibt nur der Weg über das OS (auslesen, ummodeln, verwenden)
TimePrefix := '';
TimePostfix := ''; if StrToIntDef(GetLocaleStr(Locale, LOCALE_ITLZERO, '0'), 0) = 0 then HourFormat := 'h' else HourFormat := 'hh'; if StrToIntDef(GetLocaleStr(Locale, LOCALE_ITIME, '0'), 0) = 0 then if StrToIntDef(GetLocaleStr(Locale, LOCALE_ITIMEMARKPOSN, '0'), 0) = 0 then TimePostfix := ' AMPM' else TimePrefix := 'AMPM '; Result.ShortTimeFormat := TimePrefix + HourFormat + ':mm' + TimePostfix; // <- DA Result.LongTimeFormat := TimePrefix + HourFormat + ':mm:ss' + TimePostfix; // <- DA |
AW: FormatSettings for Dummies
:P Davon rede ich die ganze Zeit... na endlich. :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 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