| Autor |
Beitrag |
Roadrunner25
      
Beiträge: 89
Win XP
D7
|
Verfasst: Di 17.04.07 10:44
Hallo Zusammen,
komme mal wieder nicht weiter! Mein Programm nervt mich jetzt immer mit einer Fehlermedlung, sobald neue Berechnungen über ein ButtonClick Ereignis ausgelöst werden. Die Meldung lautet : Im Projekt Beta1.0.exe ist eine Exception der Klasse ECovertError aufgetreten. Meldung : „82.03 ist kein gültiger Gleitkommawert !“
Die angegebene Gleitkommazahl (hier) "82.03" ist eine Länge, die in einer eigenen Unit berechnet und später in ein Editfeld eingetragen wird.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| b := sqrt(r1*r1+r2*r2-2*r1*r2*cos(theta1));
procedure TForm1.Button1Click(Sender: TObject);
var be, alf, bet, Fa, Mkl : Double; s : String;
begin
Start(StrToFloat(Edit1.Text),StrToFloat(Edit2.Text),StrToFloat(Edit3.Text), StrToFloat(Edit4.Text),StrToFloat(Edit5.Text),StrToFloat(Edit7.Text), StrToFloat(Edit11.Text),be, alf, bet, Fa, Mkl);
Str(be:6:2, s);
Edit8.Text := s; ... |
in einer anderen Unit, die neue Werte Berechnet, wird die Länge b aus Edit8.Text verwendet... denke mal, hier taucht dann auch irgendwann der fehler auf...
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| alpha3 := arccos((b*b+s2*s2-c*c)/(2*b*s2));
procedure TForm1.Button2Click(Sender: TObject);
var i : Integer; s : String; a: Double;
begin
for i := StrToInt(Edit7.Text) to 270 do
begin
StringGrid1.RowCount := i+1;
StringGrid1.Cells[0,i] := IntToStr(i);
ende(i,StrToFloat(Edit1.Text),StrToFloat(Edit2.Text),StrToFloat(Edit3.Text),StrToFloat(Edit4.Text), StrToFloat(Edit8.Text),a); Str(a:4:2, s);
StringGrid1.Cells[2,i] := s;
end;
end; |
Bin für jede Hilfe dankbar....
|
|
FiceGoesDelphi
      
Beiträge: 485
Win XP Prof
Delphi 2006
|
Verfasst: Di 17.04.07 10:56
Wenn ich das jetzt richtig gesehen habe dann verwendest du einen "PUNKT" ?!
Soweit ich als Delphi-Newbie (Schöne Grüße an Stefan ^^) das weiß, solltest du ein "KOMMA" benutzen! 
_________________ <(^^<) <(^^)> (>^^)>
===================
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Di 17.04.07 10:58
| Zitat: | Soweit ich als Delphi-Newbie (Schöne Grüße an Stefan ^^) das weiß, solltest du ein "KOMMA" benutzen! |
Hat nichts mit Delphi zu tun, sondern ist die Systemeinstellung ( DecimalSeparator)
_________________ Markus Kinzler.
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Di 17.04.07 10:58
Schließ mich Markus an!
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Roadrunner25 
      
Beiträge: 89
Win XP
D7
|
Verfasst: Di 17.04.07 11:00
das habe ich auch schon vermutet, aber den Wert gebe ich ja nicht ein, er wird vom Programm einfach ins Editfeld hineingeschrieben und dann mit übernommen...In das besagte Editfeld wird vom Programmbenutzer nichts hineingegeben!
Sollte das Editfeld dann generell "formatiert" werden, damit es die Gleitkommazahl mit einem "Komma" angibt?
|
|
FiceGoesDelphi
      
Beiträge: 485
Win XP Prof
Delphi 2006
|
Verfasst: Di 17.04.07 11:00
ZeitGeist87 hat folgendes geschrieben: | | Benutz bitte weiterhin den Punkt! |
Direkt zerfleischen mich wieder alle
Also wenn ich bei mir einen PUNKT eingebe meckert Delphi sofort rum! (Gleiche Problem wie hier) Wenn ich dann aber ein KOMMA eingebe, ist alles i.O. ... 
_________________ <(^^<) <(^^)> (>^^)>
===================
|
|
Roadrunner25 
      
Beiträge: 89
Win XP
D7
|
Verfasst: Di 17.04.07 11:04
...und wie muss das dann umgeändert werden, damit es läuft??? 
|
|
zongo-joe
      
Beiträge: 134
win xp prof
D3, D4, D7
|
Verfasst: Di 17.04.07 13:25
Zurück zum Problem:
- in welchem Editfeld steht denn die "82.03" ?
- zeig doch mal den Soucecode, der den Wert berechnet und in das Editfeld einträgt.
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Di 17.04.07 14:16
Guck mal hier:
www.delphi-forum.de/...ght=decimalseparator
Hierin der Beitrag von Lannes.
P.S. Die Suche über DecimalSeparator hat bei mir 76 Hits ergeben. Da müsste ja was für alle Fälle dabei sein.
MfG Horst
|
|
Roadrunner25 
      
Beiträge: 89
Win XP
D7
|
Verfasst: Di 17.04.07 14:53
Danke für die Hilfe...Fehler ist behoben....aber irgendwie schon komisch, dass das Programm nicht selbst erkennt! Naja,...schwamm drüber!
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 17.04.07 15:09
Hallo,
Roadrunner25 hat folgendes geschrieben: | | ....aber irgendwie schon komisch, dass das Programm nicht selbst erkennt!... |
Das Dein Programm das selber erkennt liegt in Deiner Verantwortung, Du schreibst doch den Code.
Meinst Du mit Programm den Compiler? Woher soll den der Compiler wissen was mit dem Eintrag im Edit gemeint ist, bzw. wie er weiter genutzt werden soll? 17.04 = 17,04 Liter oder das Datum 17. April?
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Roadrunner25 
      
Beiträge: 89
Win XP
D7
|
Verfasst: Di 17.04.07 15:31
ich meine ja nur....ich sage dem programm, dass es den errechneten wert in einem edit ausgibt und somit einen string erzeugt! nun wird dieser string gebraucht und per StrToFloat eigentlich umgerechnet werden....quasi die inverse Funktion zum voherigen Ereignis....und auf einmal kommt ne Fehlermeldung.....naja, ich habe das jetzt anders gelöst 
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Di 17.04.07 15:34
|
|
Roadrunner25 
      
Beiträge: 89
Win XP
D7
|
Verfasst: Mi 18.04.07 10:17
habe die benötige Länge in dem fall nochmal neu in der procedure verwendet und nicht aus dem edit ausgelesen...sind zwar jetzt ein paar mehr zielen gewrden wegen der neuberechnung, aber denke mal, dass kan nicht schaden bzw. fällt nicht so ins gewicht!
versuche jetzt aber nochmal ne andere variante....hier wurde ja vorgeschlagen den string zu verlegen,,,,werde das mal ausprobieren
|
|
Roadrunner25 
      
Beiträge: 89
Win XP
D7
|
Verfasst: Mi 18.04.07 12:00
habe einfach unter TForm1.FormCreate folgendes ergänzt :
Delphi-Quelltext 1:
| DecimalSeparator := '.'; |
und unter TForm1.FormKeyPress folgendes ergänzt :
Delphi-Quelltext 1: 2:
| if Key in [',','.',';',':'] then Key :=DecimalSeparator; |
jetzt läuft es..... oder gibt es noch ne elegantere Lösung?
|
|
GTA-Place
      

Beiträge: 5248
Erhaltene Danke: 2
WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
|
Verfasst: Mi 18.04.07 13:49
Ja, das Ergebnis in einer globalen Variable speichern. Fertig.
_________________ "Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
|
|