![]() |
StrToInt('1,234') gibt es da was für?
Ich speichere eine Zahl folgendermaßen ab
Delphi-Quellcode:
Auf einem englisch eingstellten Windows kommt da sowas wie 1,234 raus. Auf einem deutschen PC steht dort 1.234.
Result := FloatToStrF(Num, ffNumber, 8, 0);
Wie kann ich diese Zahl system-unabhängig einlesen? 1.234 lässt sich mit StrToInt() auf einem deutschen Windows ohne Fehler einlesen. |
AW: StrToInt('1,234') gibt es da was für?
Ist es nicht umgekehrt? Im deutschen ist das Komma das Dezimaletrennzeichen, im englischen der Punkt. Also sollte auf einem System mit englischen Regianaleinstellungen 1.234 rauskommen.
Was ist eigentlich genau die Eingabe und ist der Trenner, die Dezimaltrennung oder die Gruppierung? Und berücksichtigt FloatToStr nicht die Regionaleinstellungen? Das heißt, wenn in der Datenquelle 1.234 englenglsich steht und formatiert das deutsch wird 1,234 angezeigt. |
AW: StrToInt('1,234') gibt es da was für?
Zitat:
Zitat:
|
AW: StrToInt('1,234') gibt es da was für?
Hallo,
da als Trenner ja nur Punkt oder Komma in Frage kommen, würde ich mich für eine Variante entscheiden. z.B. bei Punkt StrReplace Komma durch Punkt (auf Verdacht) und dann StrToFloatDef mit dem entsprechenden FormatSetting. ![]() |
AW: StrToInt('1,234') gibt es da was für?
Ich begehe ohnehin einen Fehler. Die Daten die geschrieben werden dienen einer Statistik und vorher formatiere ich diese eine Zahl noch.
Das habe ich jetzt rausgenommen. |
AW: StrToInt('1,234') gibt es da was für?
Ich würde Gruppentrenner komplett entfernen. In Indien z.B. gruppiert man nichtmals strikt in 3er Päckchen, sondern... äh, irgendwie anders :D
Um also universell zu ein, würde ich sämtliche Punktierung und Spaces vorab entfernen - geht bei Ints ja zum Glück recht einfach ohne was kaputt zu machen. |
AW: StrToInt('1,234') gibt es da was für?
Also ist der Punkt und das Komma die Gruppierung. Da hilft, glaube ich, nur StringReplace.
|
AW: StrToInt('1,234') gibt es da was für?
Zitat:
Mit
Delphi-Quellcode:
sollte es aber gehen - auch bei '1,234'.
StrToInt('1.234'.Replace('.', '').Replace(',', ''))
|
AW: StrToInt('1,234') gibt es da was für?
Zitat:
|
AW: StrToInt('1,234') gibt es da was für?
Die wichtigste Frage die hier nirgendwo beantwortet wird:
Soll der Wert der Zahl 1234 oder 1,234 sein? Ich glaube ansonsten reden wir aneinander vorbei. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:04 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