Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehler: Exception der Klasse EConvertError (https://www.delphipraxis.net/9187-fehler-exception-der-klasse-econverterror.html)

BlackdragoN 19. Sep 2003 21:04


Fehler: Exception der Klasse EConvertError
 
Hallo!

Ich bin noch recht neu hier und auch in Delphi und habe schon die ersten Probs, wo ich keine Ahnung hab wo das her kommt.

Wenn ich in ein paar Editfelder Werte eingebe, im Programm selbst was rechnen lasse und das Ergebnis dann in einem anderen Editfeld wieder ausgeben lassen will, kommt diese Fehlermeldung:

Zitat:

Im Projekt ***.exe ist eine Exception der Klasse EConvertError aufgetreten. Meldung: ''' ist kein gültiger Gleitkommawert'. Prozess wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen.
Wisst ihr da weiter?
Thx schonmal...

Gruß BlackdragoN

Chewie 19. Sep 2003 21:12

Re: Fehler: Exception der Klasse EConvertError
 
Du versuchst einen leeren String (wahrscheinlich mit StrtoFloat) in einen Gleitkommawert umzuwandeln, was natürlich schiefläuft.

BlackdragoN 19. Sep 2003 21:22

Re: Fehler: Exception der Klasse EConvertError
 
Hmm... aber verstehe nicht, warum der String leer sein soll?
Ich lasse halt was ausrechnen, was dann über strtofloat in einem Editfeld ausgegeben wird. Bei strtoint kommt auch n Fehler, nur halt keiner mit Gleitkommawert.

Chewie 19. Sep 2003 21:29

Re: Fehler: Exception der Klasse EConvertError
 
Zeig mal deinen Code. Wahrscheinlich ist das Eingabefeld zu dem Zeitpunkt, als die Funktion aufgerufen wird, leer.

BlackdragoN 19. Sep 2003 21:54

Re: Fehler: Exception der Klasse EConvertError
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,d:integer;
e:real;
begin
a:=100;
b:=50;
edit1.text:=inttostr(c);
edit2.Text:=inttostr(d);
e:=(a*c)+(b*d);
e:=strtofloat(edit3.text);

end;

end.
In der Grundstruktur ist das der selbe code wie im eigentlichen Prog, blos halt mit weniger Editfeldern und Variablen. Kommt aber der selbe Fehler bei raus.

[edit=Admin]Delphi-Tags eingefügt. Mfg, Daniel[/edit]

Chewie 19. Sep 2003 22:10

Re: Fehler: Exception der Klasse EConvertError
 
Ähm, was hast du überhaupt vor? Ich schreib dir mal, was bei deinem Code passiert.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  a,b,c,d:integer;
  f:real;
begin
  a:=100; //a wird der Wert 100 zugewiesen
  b:=50; //b wird der Wert 50 zugewiesen
  edit1.text:=inttostr(c); //c wird in einen String umgewandelt als Text eines Edits gesetzt (obwohl undefiniert)
  edit2.Text:=inttostr(d); //d wird in einen String umgewandelt als Text eines Edits gesetzt (obwohl undefiniert)
  //was ist e?
  e:=(a*c)+(b*d); //c und d sind undefiniert, wahrscheinlich 0. Also e=0 
  e:=strtofloat(edit3.text); //der Text des Edits wird in einen Float umgewandelt und e zugewiesen
end;
Für mich sieht das aus, als hättest du Schwierigkeiten mit dem Zuweisungsoperator.
Das, was rechts von ihm steht, wird der linken Seite zugewiesen, nicht umgekehrt!

fkerber 19. Sep 2003 22:11

Re: Fehler: Exception der Klasse EConvertError
 
Hi!

Ein Tipp vorneweg:
Wenn du deinen Code mit [.delphi][/.delphi] (ohne die Punkte) umschließt, wird er richtig formatiert!

Zu deinem Problem:

Wo werden denn c und d zugewiesen, die sind ja noch uninitalisiert!
Und was macht die Funktion eigentlich?

Du weißt edit1 den wert von c zu (was auch immer der ist)
Du weißt edit2 den wert von d zu (was auch immer der ist)

dann wird e etwas zugewiesen (c+d sind immer noch undefiniert :? )

Und dann weißt du e erneut etwas zu (diesmal den wert aus edit3)

Also brauchst du doch die Berechnung von e vorher nicht, oder versteh ich das falsch?
Der eigentliche Fehler liegt wohl daran, dass in edit3.text zu der Zeit des Ausführens der Funktion keine Kommazahl drin ist!

ciao fkerber

[Edit]Da war ich wohl zu langsam :cry: [/Edit]

BlackdragoN 19. Sep 2003 22:20

Re: Fehler: Exception der Klasse EConvertError
 
sorry... e = f .. hab mich nur vorhin beim editieren verschrieben oO
habs mal dementsprechend im code geändert, wie es eigentlich sein sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.

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