Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Problem mit StrToFloat


Hendi48 - Do 04.10.07 16:34
Titel: Problem mit StrToFloat
Hi,

ich möchte gerne mit einer Kommazahl rechnen (z.B. 10.97). Dazu habe ich ein Extended deklariert und mit StrToFloat versucht den String (10.97) darein zu tun, aber es kommt immer "'10.97' is not a valid floating point value". Ich habe schon versucht den Punkt durch ein Komma zu ersetzten und hab auch schon DezimalSeparator auf Punkt gesetzt, aber es geht immer noch nicht. Was mach ich denn falsch?


Critter - Do 04.10.07 16:46

Hallo,

hast du vielleicht noch leerzeichen oder Zeilenumbrüche in deinem String?

critter


Hendi48 - Do 04.10.07 16:51

Nein, wenn ich StrToFloat('10.97'); mach geht es auch nicht.


Allesquarks - Do 04.10.07 17:09

probiers mal mit komma statt punkt das sollte man auch global regeln können über decimalseperator was da verwendet wird

Grüße


Hendi48 - Do 04.10.07 17:22

Ich hab es ja oben schon geschrieben dass ich das probiert hab - es geht nicht =(


Allesquarks - Do 04.10.07 17:24

oh hatt ich überlesen aber versuchs doch trotzdem mal mit komma vielleicht liegts ja daran dass das Setzen des Seperators nicht funktioniert


GTA-Place - Do 04.10.07 17:34

Hat er doch auch schon. Bitte aufmerksam lesen ;-)


bushwalkbackflip - Do 04.10.07 22:10

also StrToFloat('10,97'); funktioniert bei mir. habe einfach ein neues projekt erstellt und das in die formcreate reingeschrieben -> funktioniert. bei nem punkt gab es ne fehlermeldung. ich meine, noch im kopf zu haben, dass wir in der schule immer StrToFloatF benutzt haben... bin mir aber nicht mehr so ganz sicher. ansonsten würd ich an deiner stelle einfach mal die hilfe fragen ;)


jaenicke - Do 04.10.07 22:39

Wie wäre es mit einem Beispielcode, der bei dir nicht geht? Insbesondere mit dem Versuch, den Separator zu ersetzen? Weil bei mir gibts da keine Probleme, deshalb würde ich das gerne mal mit deinem Code bzw. deiner Exe testen. Vielleicht liegts ja an deinen Systemeinstellungen.


Arne Danikowski - Do 04.10.07 23:25

Hast Du mal versucht den wert vorher in eine Variable zu schreiben?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var zahl1,zahl2:String

begin 
Zahl1=:=0.8
Zahl2:=StrToFloat(Zahl1);
end


das funzt 100 pro

und

Delphi-Quelltext
1:
2:
3:
Var zahl1:String;
begin
Zahl1:=1.93;


geht auch, da brauch ich kein StrToFloat


jaenicke - Do 04.10.07 23:32

user profile iconArne Danikowski hat folgendes geschrieben:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var zahl1,zahl2:String

begin 
Zahl1=:=0.8
Zahl2:=StrToFloat(Zahl1);
end


das funzt 100 pro
Wie das?
Erste Zeile: 0.8 ist ein Fließkommawert, Zahl1 ein String...
Zweite Zeile: StrToFloat gibt einen Fließkommawert, Zahl2 ist ein String...

user profile iconArne Danikowski hat folgendes geschrieben:
und

Delphi-Quelltext
1:
2:
3:
Var zahl1:String;
begin
Zahl1:=1.93;


geht auch, da brauch ich kein StrToFloat
Zahl1 ist ein String, 1.93 ein Fließkommawert...


Arne Danikowski - Fr 05.10.07 11:48

Ops mein Fehler kein String sind natürlich Single

richtig muss es heissen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var zahl1:Single;
    zahl2:String

begin   
Zahl1=:=0.8  
zahl2:=FloatToStrF(Zahl1, ffnumber, 7,2);
edit1.text:=zahl2;  
end


da hab ich net aufgepasst :(


Hendi48 - Fr 05.10.07 14:50

Ah, ich hab den Fehler gefunden...es war noch ein Tab an der Value dran, das sah man aber weder in der Fehlermeldung, noch wenn man es in einer ListBox anzeigen lässt. Erst als ich die ListBox in eine Datei gespeichert hab war das Tab sichtbar. Ohne das geht's jetzt!