Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehler bei StrToFloat(StrAlsIntegerFormatiert) (https://www.delphipraxis.net/90376-fehler-bei-strtofloat-stralsintegerformatiert.html)

newgro 16. Apr 2007 13:10


Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Hallo,

ich habe in der DB einen Wert als Float definert. Man kann in einem anderen Feld die NKS angeben.
Ich dachte mir nun, das es einfach möglich ist aus einem String (12345 -> aus einem Textfeld) mit NKS (0 -> aus der DB)
und der Funktion StrToFloat einen Float zu erhalten. Leider bekomme ich eine Exception - "kein gültiger Gleitkommawert"

Gibt es eine andere Möglichkeit als wenn NKS=0 dann StrToInt sonst StrToFloat? Ich denke da an sowas wie StrToFloat mit Formatangaben.

Danke
Per

Klaus01 16. Apr 2007 13:23

Re: Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Was ist NKS? NachKommaStellen?

StrToFloat hat normalerweise kein Probleme einen String der eine GanzZahl beinhaltet
in einen Float umzuwandeln.
Hast Du vielleicht ein Problem mit deinem DecimalSeperator?

Grüße
Klaus

newgro 16. Apr 2007 13:28

Re: Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Hallo Klaus,

0 scheint zu gehen, aber 1000 und 1.000 gehen nicht. Allerdings geht 1000,0 auch nicht.

Danke für die Hilfe
Per

Klaus01 16. Apr 2007 13:33

Re: Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Aber wenn Du Deinen Wert in der DB als Float definiert hast,
warum liest Du in dann nicht als Float aus?

Grüße
Klaus

newgro 16. Apr 2007 13:33

Re: Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Sollte Code erforderlich sein:
Delphi-Quellcode:
function getFormatted(value: String; decPlaces: Integer): Real;
var toFormat: Real;
begin
  if value = '' then toFormat:= 0 else toFormat:= StrToFloat(value);
  result:=StrToFloat(format('%.' + IntToStr(decPlaces) + 'n', [toFormat]));
end;
Cheers
Per

newgro 16. Apr 2007 13:36

Re: Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Du meinst in etwa so?

Delphi-Quellcode:
FieldByName('count').AsFloat
Das mache ich. Dann wird dieser Wert in ein Tedit Feld gepackt und dann wieder ausgelesen. Und dann knallt es.

Cheers
Per

Klaus01 16. Apr 2007 13:42

Re: Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Habe es einmal ein wenig umgemodelt.
Aber nicht getestet, für power musst Du die Unit math einbinden.

Delphi-Quellcode:
function getFormatted(value: String; decPlaces: Integer): Real;
var toFormat: Real;
begin
 
  decPlaces:=decPlaces * -1;

  if value = '' then
    toFormat:= 0 
  else
    toFormat:= StrToFloat(value);

  result:=toFormat* power(10,decPlaces); // 

end;
Grüße
Klaus

newgro 16. Apr 2007 13:45

Re: Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Hmm. Aber

Delphi-Quellcode:
toFormat:= StrToFloat(value);
bringt mir doch den Fehler. Habe ich getraced.

newgro 16. Apr 2007 13:46

Re: Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Als value geht z.B.
1000
1.000
1.234.564
rein und alles bringt den Fehler.

Klaus01 16. Apr 2007 13:48

Re: Fehler bei StrToFloat(StrAlsIntegerFormatiert)
 
Zitat:

Zitat von newgro
Hmm. Aber

Delphi-Quellcode:
toFormat:= StrToFloat(value);
bringt mir doch den Fehler. Habe ich getraced.

Bist Du schon mal mit F7/F8 durch den Code gegangen und hast dir mit Ctrl-F5 (Watchlist)
den Wert der Variable value angeschaut?

Und wenn Du ein deutsche Windows System verwendest, dann haben die Werte keine Tausendertrennzeichen
und der DecimalSeparator ist das Komma (,).
Also ist 1.234.567 kein Floatwert.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr.
Seite 1 von 3  1 23      

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