Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   falsches Datums- und Zahlenformat in Webanwendung (https://www.delphipraxis.net/208336-falsches-datums-und-zahlenformat-webanwendung.html)

bcvs 16. Jul 2021 10:00

falsches Datums- und Zahlenformat in Webanwendung
 
Hallo,

ich habe jetzt eine Webserver-Anwendung, die als ISAPI-Dll im IIS läuft. Auf dem Server läuft ein englisches Windows, bei dem allerdings das deutsche Datumsformat eingestellt ist.

Der Webserver gibt aber trotzdem alle Datumsangaben im Format m/d/yyyy aus, wenn er als ISAPI im IIS läuft. Kompiliere und starte ich den Webserver dagegen als Standalone-Exe, liefert er dd.mm.yyyy als Datumsformat aus, genauso wie auch der Windows-Explorer und alle anderen Programme.

Entsprechendes gilt für das Zahlenformat.

Ist das ein bekanntes Problem?

Ich habe mir jetzt so geholfen, dass ich die Formatsettings explizit auf meine gewünschten Werte setze.

dummzeuch 16. Jul 2021 10:14

AW: falsches Datums- und Zahlenformat in Webanwendung
 
Wenn ich mich recht erinnere, sind die Regionalen Einstellungen (regional settings) unter Windows benutzerabhängig. Der Webserver läuft vermutlich als Service und nicht unter dem Account, den Du für das Executable verwendest.

Generell ist Dein "Behelf" genau die richtige Herangehensweise. Ein solches Programm sollte nicht die Windows-Einstellungen verwenden.

bcvs 16. Jul 2021 10:39

AW: falsches Datums- und Zahlenformat in Webanwendung
 
OK, danke. Das klingt logisch.

himitsu 16. Jul 2021 11:02

AW: falsches Datums- und Zahlenformat in Webanwendung
 
Man könnte zwar auch die Spracheinstellungen des Systemaccounts ändern, aber dann könnte es passieren, dass andere Dienste nicht mehr funktionieren, da sie dort war Anderes erwarten, weil nie selten jemand daran rumspielt.

Alternativ kannst'e deinen Service auch in einem UserAccount laufen lassen, welcher die passenden Einstellungen besitzt,
aber wenn ein Programm eh ein "definiertes" Format benötigt, unabhängig von den Systemeinstellungen, dann ist es eh besser, das auch selbst im Programm zu machen.



Alle Werte/Felder einzeln manuell zu setzen machst du aber nicht?

Delphi-Quellcode:
System.SysUtils.FormtSettings := TFormatSettings.Create('de-DE');

System.SysUtils.FormtSettings := TFormatSettings.Create('en-US');
System.SysUtils.FormtSettings := TFormatSettings.Invariant; // wie en-US, aber nicht aus Windows geholt, sondern manuell von Delphi


ACHTUNG: Wenn Windows eine ChangeNotification sendet (WM_SETTINGCHANGE oder RM_TaskbarCreated), dann lädt Delphi standardmäßig die Spracheinstellungen neu und überschreibt deine Änderungen.
Delphi-Quellcode:
Application.UpdateFormatSettings := False;

Rolf Frei 16. Jul 2021 13:34

AW: falsches Datums- und Zahlenformat in Webanwendung
 
Zitat:

Zitat von himitsu (Beitrag 1492394)
Delphi-Quellcode:
System.SysUtils.FormtSettings := TFormatSettings.Create('de-DE');

System.SysUtils.FormtSettings := TFormatSettings.Create('en-US');
System.SysUtils.FormtSettings := TFormatSettings.Invariant; // wie en-US, aber nicht aus Windows geholt, sondern manuell von Delphi

ACHTUNG: Wenn Windows eine ChangeNotification sendet (WM_SETTINGCHANGE oder RM_TaskbarCreated), dann lädt Delphi standardmäßig die Spracheinstellungen neu und überschreibt deine Änderungen.
Delphi-Quellcode:
Application.UpdateFormatSettings := False;

Das betrifft nur Windows Anwendungen und nicht Webanwendungen (Webbroker). Application.UpdateFormatSettings gibt es da nicht. Wenn die obige Formatsetting bei jedem Request gemacht wird, sollte das kein Problem darstellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr.

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