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 Formatierungsprobleme bei TJvValidateEdit (https://www.delphipraxis.net/144596-formatierungsprobleme-bei-tjvvalidateedit.html)

SteffenSchm 11. Dez 2009 18:16


Formatierungsprobleme bei TJvValidateEdit
 
Ich habe für mein Programm ausgiebig von der JVCL Komponente TJvValidateEdit Gebrauch gemacht. An meinem Entwicklungsrechner klappte alles Prima.

Auf einem anderen Rechner traten aber beim Arbeiten mit dem fertigen Programm unerwartete Effekte auf. Ein so zugewiesener Wert

Delphi-Quellcode:
  JvValidateEdit1.Value:=1.2;
erscheint in der Anzeige als

1200,00

Nach jedem Auslesen und erneutem Zuweisen von JvValidateEdit1.Value (ohne Editieren des Wertes) erhöht sich der Wert um den Faktor 1000.

Auf beiden Rechnern habe ich die regionalen Einstellungen für Deutschland aktiviert. Auch sonst kann ich keine Unterschiede zwischen den Einstellungen der beiden Rechner finden.

Der Fehler tritt auch unabhängig davon auf, welches DisplayFormat (dfFloat, dfFixedFloat, dfDecimal,...) von TJvValidateEdit ich auswähle.

Ich bin hilflos !

hathor 12. Dez 2009 13:01

Re: Formatierungsprobleme bei TJvValidateEdit
 
Regionale Einstellung für Deutschland ist:
. = Tausenderseparator,
, = Dezimalseparator.

SteffenSchm 12. Dez 2009 13:14

Re: Formatierungsprobleme bei TJvValidateEdit
 
Ja das weis ich wohl.
Bei regionaler Einstellung für Deutschland ist das auch eingestellt und zwar für beide Rechner - meinen Entwicklungsrechner und den Testrechner. Trotzdem regiert das Programm bzw. die Komponente TJvValidateEdit auf beiden Rechnern unterschiedlich.

Ganz undabhängig davon, was als Tausend- und Dezimaltrennzeichen eingestellt ist, müsste bei Umwandlung eines Double-Wertes in einen String und zurück eigentlich wieder das gleiche rauskommen - ist aber nicht so.

Hat vlt. jemand anderes dieses Problem auch schon gehabt?

hathor 12. Dez 2009 13:24

Re: Formatierungsprobleme bei TJvValidateEdit
 
Zitat:

Zitat von SteffenSchm
Ja das weis ich wohl.

Die Eingabe "JvValidateEdit1.Value:=1.2;" entspricht nicht den Konventionen - entweder "JvValidateEdit1.Value:=1.200;" oder
"JvValidateEdit1.Value:=1,2;"

SteffenSchm 12. Dez 2009 15:38

Re: Formatierungsprobleme bei TJvValidateEdit
 
Ich übergebe an JvValidateEdit1.Value ja nicht einen String, sondern einen Double-Wert!

SteffenSchm 16. Dez 2009 12:11

Re: Formatierungsprobleme bei TJvValidateEdit
 
Bei der Suche nach der Ursache bin ich inzwischen einen Schritt weiter:

TJvValidateEdit verwendet zur Typumwandlung Zahl --> String --> Zahl unterschiedliche Werte für ThousandSeparator und DecimalSeparator. Teilweise werden die von Delphi initialsierten Variablen benutzt und teilweise werden diese mit GetLocalChar aus dem Betriebssystem geholt.

Theoretisch sollte das egal sein, da beide Arten zu den gleichen Zeichen für ThousandSeparator und DecimalSeparator führen müssten.

Bei meinem Entwicklungsrechner ist das auch so, bei anderen PCs aber nicht (alle mir Regionaleinstelung für Deutschland). Bei mindestens zwei Rechnern zeigt die globalen Variablen ThousandSeparator und DecimalSeparator nicht auf die deutschen sondern auf die englischen Werte, während GetLocalChar(...) die richtigen, deutschen Einstellung zurückliefert.

Die globalen Variablen ThousandSeparator und DecimalSeparator werden im Initilisierungsteil von SysUtils ebenfalls mit der Funktion GetLocalChar(...) aus dem Betriebssystem gelesen. Evtl. ist diese Initialisierung nicht erfolgreich. In diesem Fall werden als Standardwerte die englischen Einstellungen für ThousandSeparator und DecimalSeparator übernommen.

Hat jemand die gleichen Probleme oder eine Idee ?


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