Exception-Klasse Fehler verhindern

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
robbe327
Beiträge: 10
Registriert: Di 23. Feb 2016, 11:54

Exception-Klasse Fehler verhindern

Beitrag von robbe327 »

Hallo.

In meinem Programm kann man bestimmte Werte in Edit-Felder eingeben, um aus denen anschließend über Formeln einen Ausgangswert zu berechnen. Das funktioniert soweit wie es soll, jedoch stürzt das Programm ab sobald ein Edit-Feld leer bleibt.
Unbenannt.PNG
Ist ja auch logisch, weil das Programm "nichts" schlecht konvertieren kann.

Gibt es eine Funktion oder einen Befehl, mit dem man eine solche Fehlermeldung vermeiden kann und in so einer Situation eine Showmessage angezeigt werden kann?

Danke im voraus(:

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Exception-Klasse Fehler verhindern

Beitrag von Socke »

MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 6927
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Exception-Klasse Fehler verhindern

Beitrag von Mathias »

So sollte es gehen, es wird kein Except mehr ausgelöst.
Ich denke, du hast ein einfaches StrToFloat genommen.

Code: Alles auswählen

procedure TForm1.Edit1Change(Sender: TObject);
var
  f: single;
begin
  if TryStrToFloat(Edit1.Text, f) then begin
    Label1.Caption := FloatToStr(f);
  end;
end;    
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

robbe327
Beiträge: 10
Registriert: Di 23. Feb 2016, 11:54

Re: Exception-Klasse Fehler verhindern

Beitrag von robbe327 »

Mathias hat geschrieben: Ich denke, du hast ein einfaches StrToFloat genommen.
Ja, das habe ich (: also einfach ein "Try" davor setzen?

Mathias
Beiträge: 6927
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Exception-Klasse Fehler verhindern

Beitrag von Mathias »

Ja, das habe ich (: also einfach ein "Try" davor setzen?
Du kannst es noch ganz elegant lösen, dann sieht man sofort, wen etwas ungültiges im Edit steht.

Code: Alles auswählen

  if TryStrToFloat(Edit1.Text, f) then begin
    Label1.Caption := FloatToStr(f);
    Edit1.Color := clWhite;
  end else begin
    Edit1.Color := clRed;
  end;  
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

robbe327
Beiträge: 10
Registriert: Di 23. Feb 2016, 11:54

Re: Exception-Klasse Fehler verhindern

Beitrag von robbe327 »

Das Prinzip hab ich soweit verstanden, Ich weiß nur nicht recht WO ich diesen Befehl nun einfügen soll.

Der Fehler entsteht wenn ich den Button um berechnen klicke. soll ich diesen Befehl also unter der procedure TForm1.Button1click setzen oder wohin?

Und wo kommt der Label aufeinmal her ?

Tut mir leid, habe kaum Fachwissen mit Lazarus und Pascal :oops:

Antworten