Autor Beitrag
Roadrunner25
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP
D7
BeitragVerfasst: 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.

ausblenden 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));


// Eigentliche Unit....

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;   //die berechnete Länge b wird also in Edit8 ausgegeben

 ...



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...

ausblenden volle Höhe Delphi-Quelltext
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));

// wieder in eigentlich Unit...

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);  //hier wird die Gleitkommazahl ausgelesen und als Parameter übergeben

   Str(a:4:2, s);

   StringGrid1.Cells[2,i] := s;

   end;

end;


Bin für jede Hilfe dankbar....
FiceGoesDelphi
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 485

Win XP Prof
Delphi 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP
D7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 485

Win XP Prof
Delphi 2006
BeitragVerfasst: Di 17.04.07 11:00 
user profile iconZeitGeist87 hat folgendes geschrieben:
Benutz bitte weiterhin den Punkt!


Direkt zerfleischen mich wieder alle :lol:
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. ... :roll:

_________________
<(^^<) <(^^)> (>^^)>
===================
Roadrunner25 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP
D7
BeitragVerfasst: Di 17.04.07 11:04 
...und wie muss das dann umgeändert werden, damit es läuft??? :?: :gruebel:
zongo-joe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 134

win xp prof
D3, D4, D7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 312

Win 9x, Win XP
Delphi 3pro, 7PE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP
D7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 17.04.07 15:09 
Hallo,
user profile iconRoadrunner25 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. :wink:

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP
D7
BeitragVerfasst: 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 :dance2:
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Di 17.04.07 15:34 
user profile iconRoadrunner25 hat folgendes geschrieben:
.....naja, ich habe das jetzt anders gelöst :dance2:

Und wie? Wäre schön, wenn wir deine Lösung auch einmal sehen dürften. User die das gleiche Problem haben, werden sich dann später auch darüber freuen. ;)
Roadrunner25 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP
D7
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP
D7
BeitragVerfasst: Mi 18.04.07 12:00 
habe einfach unter TForm1.FormCreate folgendes ergänzt :

ausblenden Delphi-Quelltext
1:
DecimalSeparator := '.';					


und unter TForm1.FormKeyPress folgendes ergänzt :

ausblenden Delphi-Quelltext
1:
2:
if Key in [',','.',';',':'then   
      Key :=DecimalSeparator;


jetzt läuft es..... oder gibt es noch ne elegantere Lösung?
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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)