Abfangen von Fehler mit try - except

Rund um die LCL und andere Komponenten
Antworten
Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Abfangen von Fehler mit try - except

Beitrag von Eb »

Hallo,

Ich möchte den Text, den der Anwender in ein Edit-Feld eingibt, mit dem onchange-Ereignis in eine integer-Variable schreiben.

Wenn ins Edit-Feld ein neuer Wert eingetragen wird, kommt es vor, dass das Feld kurzzeitig leer ist.
Dann kann die Umwandlung strtoint nicht funktionieren.
Dies habe ich nun versucht so abzufangen:

Code: Alles auswählen

implementation
 
{ TForm1 }
var zahl : integer;
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
  try
    zahl := strtoint(edit1.text);
  except
      zahl := 0;
  end;
end;



Das funktioniert aber nicht, ich bekomme trotzdem die Fehlermeldung:
"project1 raised Execption class 'EConvertError'"

Hat jemand eine Idee?

Gruss
Eberhard

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Das passiert nur innerhalb der IDE also unter dem Debugger.

Aber noch besser als mit Exceptions arbeiten wäre:
TryStrToInt(....

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Problem gelöst

Beitrag von Eb »

Stimmt !

Hatte ich nicht ausprobiert.

Das mit dem TryStrToInt werd' ich mir mal anschauen

merci,

Gruss
Eberhard

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Sorry, wenn ich das jetzt wieder ausgrabe, aber es passt gut zu meinem gegenwärtigen Problem.
Und zwar:
Beim OnCreate-Ereignis meiner Form versuche ich die Zeilen einer Datei in eine TStringList zu laden. Natürlich mit try / except.
Sollte die Datei nicht vorhanden sein, muss ja was passieren. ;)

Das ist aber eigentlich sehr nervig, wenn der Debugger da immer abschmiert. Kann man das auch irgendwie umschiffen?

(Ich meine eine vielleicht elegantere Lösung, als das Programm immer mit CTRL+F9 zu erstellen, in den Dateimanager zu wechseln und dort zu starten, das geht ja auch....)

Danke.

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Beitrag von DiBo33 »

Wie wäre es wenn du einfach das Vorhandensein der Datei überprüfst?

FileExists()

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Du hast mich überredet, danke.
:D

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

@Eb eine andere Möglichkeit währe die du aufjedenfall einbauen solltest zu prüfen ob die Eigenschaft Text leer ist oder nicht, wenn sie leer ist brauchst du auch nicht zuwandeln *G*
MFG
Michael Springwald

petermännchen
Beiträge: 92
Registriert: So 26. Aug 2007, 20:35
OS, Lazarus, FPC: Win7, Laz 1.2.6, FPC 2.6.4, SVN 33306, ZEOS 7.1.4
CPU-Target: 32Bit
Wohnort: Helmstedt
Kontaktdaten:

Beitrag von petermännchen »

Bei der eigentlichen Frage würde ich eher das Ereignis onkeydown nehmen (Falls es das auch in Freepascal gibt). Hier dann

if not (key in [..]) then

Gruß

Peter
Zeiterfassung, einfach gerechter!

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ja sowas gibt es natürlich, dann würde ich gleich ein TSpinEdit nehmen....
MFG
Michael Springwald

Eb
Lazarusforum e. V.
Beiträge: 238
Registriert: Di 5. Feb 2008, 15:32
OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
CPU-Target: 64Bit
Wohnort: Stuttgart

Beitrag von Eb »

An das TSpinEdit hatte ich noch gar nicht gedacht,
das ist für meine Zwecke - in Kombination mit einer Prüfung bei onkeydown - die beste Lösung,

Gruss,
Eberhard

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Da brauchst du gar nicht zu prüfen, es lässt einfach nur Zahlen zu. Aller anderen Tasten werden nicht beachtet !
MFG
Michael Springwald

Antworten