![]() |
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:
erscheint in der Anzeige als
JvValidateEdit1.Value:=1.2;
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 ! |
Re: Formatierungsprobleme bei TJvValidateEdit
Regionale Einstellung für Deutschland ist:
. = Tausenderseparator, , = Dezimalseparator. |
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? |
Re: Formatierungsprobleme bei TJvValidateEdit
Zitat:
"JvValidateEdit1.Value:=1,2;" |
Re: Formatierungsprobleme bei TJvValidateEdit
Ich übergebe an JvValidateEdit1.Value ja nicht einen String, sondern einen Double-Wert!
|
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 09:23 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