Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StrToFloat - TFormatSettings (https://www.delphipraxis.net/191106-strtofloat-tformatsettings.html)

Pfaffe 8. Dez 2016 14:04

Delphi-Version: 10 Berlin

StrToFloat - TFormatSettings
 
Liste der Anhänge anzeigen (Anzahl: 1)
Warum kommt die Exception bei StrToFloat?
Mir ist übrigens bekannt, dass es funktioniert, wenn ich den Punkt vorher aus dem String entferne.

Der schöne Günther 8. Dez 2016 14:08

AW: StrToFloat - TFormatSettings
 
Die Exception kommt weil sie, laut Doku, kommen soll:
http://docwiki.embarcadero.com/Libra...ils.StrToFloat

Zitat:

Tausendertrennzeichen und Währungssymbole sind nicht zulässig. Enthält S keinen gültigen Wert, löst StrToFloat eine EConvertError-Exception aus.

himitsu 8. Dez 2016 14:21

AW: StrToFloat - TFormatSettings
 
Und deine Initialisierung ist auch falsch.
http://docwiki.embarcadero.com/Libra...ettings.Create

Pfaffe 8. Dez 2016 14:27

AW: StrToFloat - TFormatSettings
 
Danke,
nach dem ich die Hilfe zum dritten mal gelesen habe, habe ich den Hinweis gesehen. Mit Tausendertrennzeichen geht es nicht.

Zitat:

Und deine Initialisierung ist auch falsch.
Warum?
Kein Parameter -> "Initialisiert einen TFormatSettings-Datensatz mit den aktuellen vom Betriebssystem bereitgestellten Standardwerten."

sakura 8. Dez 2016 14:32

AW: StrToFloat - TFormatSettings
 
Zitat:

Zitat von Pfaffe (Beitrag 1355708)
Kein Parameter -> "Initialisiert einen TFormatSettings-Datensatz mit den aktuellen vom Betriebssystem bereitgestellten Standardwerten."

Weil Create einen Record ZURÜCK liefert, nicht den aktuellen initialisiert -->
Delphi-Quellcode:
FormatSettings := TFormatSettings.Create;
...:cat:...

Pfaffe 8. Dez 2016 14:45

AW: StrToFloat - TFormatSettings
 
Danke.

Pfaffe 8. Dez 2016 15:05

AW: StrToFloat - TFormatSettings
 
Dieses Variante "zahl:= s.ToDouble;" ist wohl nicht zu gebrauchen, hier fehlt die Möglichkeit TFormatSettings zu übergeben.

Uwe Raabe 8. Dez 2016 15:17

AW: StrToFloat - TFormatSettings
 
Zitat:

Zitat von Pfaffe (Beitrag 1355715)
Dieses Variante "zahl:= s.ToDouble;" ist wohl nicht zu gebrauchen, hier fehlt die Möglichkeit TFormatSettings zu übergeben.

Das ist in der Tat so. Allerdings wird andersrum ein Schuh draus:

Delphi-Quellcode:

zahl := double.Parse(s, MyFormatSettings);
oder auch

Delphi-Quellcode:
if double.TryParse(s, zahl, MyFormatSettings) then
else

Pfaffe 8. Dez 2016 15:42

AW: StrToFloat - TFormatSettings
 
Danke, diese Variante kannte ich überhaupt noch nicht.


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