Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi StrToInt('1,234') gibt es da was für? (https://www.delphipraxis.net/203120-strtoint-1-234-gibt-es-da-fuer.html)

DieDolly 15. Jan 2020 16:05

StrToInt('1,234') gibt es da was für?
 
Ich speichere eine Zahl folgendermaßen ab
Delphi-Quellcode:
Result := FloatToStrF(Num, ffNumber, 8, 0);
Auf einem englisch eingstellten Windows kommt da sowas wie 1,234 raus. Auf einem deutschen PC steht dort 1.234.
Wie kann ich diese Zahl system-unabhängig einlesen? 1.234 lässt sich mit StrToInt() auf einem deutschen Windows ohne Fehler einlesen.

Luckie 15. Jan 2020 16:12

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.

DieDolly 15. Jan 2020 16:14

AW: StrToInt('1,234') gibt es da was für?
 
Zitat:

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.
Das weiß ich nicht, ist auch egal.

Zitat:

Was ist eigentlich genau die Eingabe und ist der Trenner, die Dezimaltrennung oder die Gruppierung?
Die Eingabe ist Entweder 1.234 oder 1,234 und soll irgendwie wieder zurück in einen Integer gebracht werden. Beides ist ein Integer, keine Gleitkommazahl. Die kommen nur von unterschiedlichen Systemen.

hoika 15. Jan 2020 16:15

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.
http://docs.embarcadero.com/products...@Extended.html

DieDolly 15. Jan 2020 16:16

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.

Medium 15. Jan 2020 16:18

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.

Luckie 15. Jan 2020 16:23

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.

Uwe Raabe 15. Jan 2020 16:25

AW: StrToInt('1,234') gibt es da was für?
 
Zitat:

Zitat von DieDolly (Beitrag 1455226)
1.234 lässt sich mit StrToInt() auf einem deutschen Windows ohne Fehler einlesen.

Das stimmt nicht! Das gibt einen Fehler '1.234' ist kein gültiger Integerwert.

Mit
Delphi-Quellcode:
StrToInt('1.234'.Replace('.', '').Replace(',', ''))
sollte es aber gehen - auch bei '1,234'.

DieDolly 15. Jan 2020 16:27

AW: StrToInt('1,234') gibt es da was für?
 
Zitat:

Das stimmt nicht! Das gibt einen Fehler '1.234' ist kein gültiger Integerwert.
Komisch, bei mir nicht. 1,234 dagegen gibt genau den Fehler. Mein Trennzeichen ist standardmäßig auf , eingestellt.

Neutral General 15. Jan 2020 16:44

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 17:59 Uhr.
Seite 1 von 3  1 23      

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