try except Fehlermeldung:EConvertError invalid integer

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

try except Fehlermeldung:EConvertError invalid integer

Beitrag von Aliobaba »

Hallo,

wahrscheinlich stehe ich nur ganz heftig auf dem Schlauch :cry:
Warum nur macht diese Code die im Bild angezeigte Fehlermeldung????

Code: Alles auswählen

Procedure TForm_Test.Try__Except ;
var
  i : integer;
begin
    try
       i := strtoint('j');
    except
       showmessage('Fehler keine Zahl');
    end;
end;         


try__except.png
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: try except Fehlermeldung:EConvertError invalid integer

Beitrag von wp_xyz »

Weil 'j' keine Zahl ist. Nimm '0', '1', oder '3245673', dann geht's. Und falls du mit 'j' die imaginäre Einheit meinst, dann must du irgendwelche Units für komplexe Zahlen einbinden, aber mit StrToInt wird das dann auch noch nicht funktionieren, weil die imaginäre Zahl j kein Integer ist.

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: try except Fehlermeldung:EConvertError invalid integer

Beitrag von Aliobaba »

Mir ist schon klar, dass "j" keine Zahl ist.
Das ist ja eben ein (hier mit Absicht gemachter) Fehler - und ich dachte "try - except" ist ja genau dazu da, Fehler abzufangen :?:
Und ich erwartete, dass dann eben diese Code-Zeile aufgerufen wird:

Code: Alles auswählen

showmessage('Fehler keine Zahl');
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: try except Fehlermeldung:EConvertError invalid integer

Beitrag von m.fuchs »

Entweder du startest dein Programm außerhalb der IDE oder du setzt das Häkchen bei "Diesen Ausnahmetyp übergehen".
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: try except Fehlermeldung:EConvertError invalid integer

Beitrag von af0815 »

Das try und except funktioniert schon, nur ist die IDE hier schneller und reagiert. Führe mal das Programm weiter aus, dann kommt deine Meldung.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: try except Fehlermeldung:EConvertError invalid integer

Beitrag von Aliobaba »

OK, Danke! Ich denke, ich habe es verstanden - und das mit dem "schneller sein" habe ich mir auch so gedacht.

Noch eine Nachfrage zum "Häkchen bei "Diesen Ausnahmetyp übergehen" ":
Wird dann dieser Ausnahmetyp im gesamten Programm immer übergangen? Das wäre evtl. gefährlich, da ich dann auf diesen Fehler ja überhaupt nicht mehr hingewiesen werde.
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: try except Fehlermeldung:EConvertError invalid integer

Beitrag von m.fuchs »

Aliobaba hat geschrieben:Noch eine Nachfrage zum "Häkchen bei "Diesen Ausnahmetyp übergehen" ":
Wird dann dieser Ausnahmetyp im gesamten Programm immer übergangen?

Ja.

Aliobaba hat geschrieben:Das wäre evtl. gefährlich, da ich dann auf diesen Fehler ja überhaupt nicht mehr hingewiesen werde.

Nicht unbedingt, die Exception wird ja trotzdem geworfen und sollte ein Fehlerfenster produzieren. Also genau so als wenn es außerhalb der IDE liefe.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: try except Fehlermeldung:EConvertError invalid integer

Beitrag von wp_xyz »

m.fuchs hat geschrieben:Entweder du startest dein Programm außerhalb der IDE oder du setzt das Häkchen bei "Diesen Ausnahmetyp übergehen".

Vielleicht sollte man noch erwähnen, dass der Exception-Typ, hier EConvertError, nun in der Liste der Sprachausnahmen erscheint - siehe "Werkzeuge" > "Einstellungen" > "Debugger" > "Sprachausnahmen". Es ist wichtig zu verstehen, dass es sich hier um eine projektspezifische Einstellung handelt, obwohl sie mitten unter all den allgemeinen Lazarus-Einstellungen aufgeführt ist - das verwirrt mich immer wieder, zumal es bei Delphi 7 anders ist und die Einstellung für andere Anwendungen übernommen wird (was m.E. total unpraktisch ist).

Antworten