Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Datum und Zeit internationalisieren (https://www.delphipraxis.net/66437-datum-und-zeit-internationalisieren.html)

emsländer 29. Mär 2006 17:13


Datum und Zeit internationalisieren
 
Moin,

ich hab ein Problem mit den Datums, Zeit und Währungsfunktionen.

Ein von mir entwickeltes Programm fürs Finanzwesen wird auch auf Rechnern mit holländischem und engl. XP genutzt. Nur wenn die Anwender die Regionsoptionen nicht auf Deutsch stellen, knallt mein Proggi mit "ungültiger Integerwert", "ungültiger Datumswert" etc. weg. Wenn das aber auf Deutsch steht, laufen andere Applikationen nicht mehr.

Hilfääääääää!!! - Wer hat nen heissen Tip?


Gruss

EL

PS.: Ich nutze Delphi 2005 Enterprise

toms 29. Mär 2006 17:32

Re: Datum und Zeit internationalisieren
 
Hallo

Um die Anwendung unabhaengig von regionalen Einstellungen zu machen, weise Default-Werte den Date/Time Format Variablen zu.

Bsp:

Delphi-Quellcode:
  DateSeparator := '/';
  TimeSeparator    := ':';
  DecimalSeparator := '.';
  ThousandSeparator := ' ';
  ShortDateFormat  := 'dd/mm/yyyy';

shmia 29. Mär 2006 18:27

Re: Datum und Zeit internationalisieren
 
Grundsätzlich:
Datumswerte niemals in string-Variablen speichern.
Datumswerte werden nur als TDateTime (bzw TDate) im Programm gespeichert.
Erst wenn der Datumswert an die Benutzeroberfläche tritt, wird er in einen String gewandelt.
Wenn das Datum in die Bestandteile Tag, Monat und Jahr getrennt werden muss:
nur die Funktion DecodeDate verwenden, keinen Umweg über einen String nehmen!

Zur Eingabe & Anzeige eines Datums die DateTimePicker oder ähnliche Controls verwenden. (keine normalen Edit-Felder!)

emsländer 29. Mär 2006 20:00

Re: Datum und Zeit internationalisieren
 
Zitat:

Zitat von shmia
Grundsätzlich:
Datumswerte niemals in string-Variablen speichern.
Datumswerte werden nur als TDateTime (bzw TDate) im Programm gespeichert.
Erst wenn der Datumswert an die Benutzeroberfläche tritt, wird er in einen String gewandelt.
Wenn das Datum in die Bestandteile Tag, Monat und Jahr getrennt werden muss:
nur die Funktion DecodeDate verwenden, keinen Umweg über einen String nehmen!

Zur Eingabe & Anzeige eines Datums die DateTimePicker oder ähnliche Controls verwenden. (keine normalen Edit-Felder!)


Danke!

Und wie erkenne ich nun die aktuelle Ländereinstellung, damit ich in der Form:

Delphi-Quellcode:
  case ländercode of ...
    DE :
    NL :
    GB :
  end;
agieren kann?`


Gruss

EL

Union 29. Mär 2006 20:18

Re: Datum und Zeit internationalisieren
 
Die aktuelle Einstellung ermittelst Du mit GetThreadLocale. Vielleicht am besten vorher Sysutils.GetFormatSettings aufrufen, dann sind die Einstellungen automatisch drin. Es gibt da auch eine Windows-Nachricht (wahrscheinlich WM_LOCALECHANGED) auf die Du reagieren kannst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 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