Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Ändern von FormatSettings verhindern (https://www.delphipraxis.net/214583-aendern-von-formatsettings-verhindern.html)

BigAl 3. Feb 2024 08:25

Ändern von FormatSettings verhindern
 
Hallo zusammen,

folgendes Problem:

Ich habe eine Delphi 12 Applikation, welche für unbegrenzt Zeit mit festen FormatSettings laufen muss. Ich setze diese ganz zu Beginn im Konstruktor des Hauptformulars. Nun wird die Variable nach unbestimmter Zeit auf die in Windows eingestellten Werte zurückgesetzt. Ich schätze Windows sendet da irgendeinen Trigger "Format Settings changed" oder so. Die Applikation darf aber zu keiner Zeit die FormatSettings von Windows verwenden sondern muss die von mir festgelegten Werte berücksichtigen.

Wie kann ich verhinden dass FormatSettings vom System verändert wird?

Update: Reicht es "Application.UpdateFormatSettings := False" zu setzen?

dummzeuch 3. Feb 2024 09:47

AW: Ändern von FormatSettings verhindern
 
Zitat:

Zitat von BigAl (Beitrag 1532952)
Update: Reicht es "Application.UpdateFormatSettings := False" zu setzen?

Laut Beschreibung im DocWiki ja.

Besser wäre natürlich, wenn Dein Programm nicht darauf angewiesen wäre, die Einstellungen zu ändern. Die meisten Funktionen, die diese verwenden, haben ja einen Overload, dem man einen eigenen TFormatSettings Parameter übergeben kann. Den erstellt man einmal als globale Variable (oder weil sich das besser anhört: Als Singleton) und verwendet ihn überall.

BigAl 3. Feb 2024 11:09

AW: Ändern von FormatSettings verhindern
 
Zitat:

Zitat von dummzeuch (Beitrag 1532953)
Zitat:

Zitat von BigAl (Beitrag 1532952)
Update: Reicht es "Application.UpdateFormatSettings := False" zu setzen?

Laut Beschreibung im DocWiki ja.

Besser wäre natürlich, wenn Dein Programm nicht darauf angewiesen wäre, die Einstellungen zu ändern. Die meisten Funktionen, die diese verwenden, haben ja einen Overload, dem man einen eigenen TFormatSettings Parameter übergeben kann. Den erstellt man einmal als globale Variable (oder weil sich das besser anhört: Als Singleton) und verwendet ihn überall.

Bei dem Programm handelt es sich im ein System mit hunderten (oder eher tausenden) von Aufrufen, in den Floats, Dates, Times usw. dargestellt werden. Genau von diesem Programm erwarten die Kunden eine spezielle Ausgabe, unabhängig vom Land (selbst in USA möchten sie TT MMM YYYY). Und das unabhängig vom System auf dem es läuft. Es gibt auch einige Threads, die mit den Formaten arbeiten. Ich denke da alles umzubauen wäre mit Kanonen nach Spatzen geschossen und macht die Lesbarkeit des Codes nicht unbedingt einfacher. Aber Du hast natürlich recht. In anderen Programmen mache ich das so, dass ich die Format-Settings immer direkt mit angebe. Das hauptsächlich weil die Programme lokal beim Kunden mit seinen Einstellungen laufen sollen aber der Datenaustausch auch zwischen den Ländern möglich sein muss (da nehme ich dann immer Invariant)...

Dennis07 3. Feb 2024 16:30

AW: Ändern von FormatSettings verhindern
 
Nimm doch einfach eine explizite Formateinstellung, zB TFormatSettings.Invariant

BigAl 3. Feb 2024 16:33

AW: Ändern von FormatSettings verhindern
 
Zitat:

Zitat von Dennis07 (Beitrag 1532963)
Nimm doch einfach eine explizite Formateinstellung, zB TFormatSettings.Invariant

Das mache ich wenn ich ein einheitliches Austauschformat benötige. Die Einstellungen welche ich für die Oberfläche setzen muss sind von den Kunden vorgegeben. Die sind auf den Fertigungsprozess bezogen und haben nicht unbedingt was mit den Ländereinstellungen des Comupters zu tun.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 Uhr.

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