Autor Beitrag
schlachtenlenker
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 35

Win XP
D5 Enterprise, d6 schüler
BeitragVerfasst: Mi 04.08.04 11:03 
Guuuuuuuuuuude

ich wollte fragen, ob jemand weiss, wie man mit dem try-befehl arbeitet. ich muss einen string auslesen und bestimmte segmente in integerwerte unmwandeln. dabei könnte durch einen fehlerhaften string natürlich der fehler " 'a' ist ein ungültiger integerwert" auftauchen. das möchte ich aba nicht. kann man diesen fehler irgendwie unterdrücken?

danke schonmal!! :)

_________________
"Als Erwin die Ente sah, wusste er, das es ein schlechter Tag werden würde"
(T. Pratchett)
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 04.08.04 11:17 
Schon mal in die Delphi-Hilfe gekuckt??!!!! :evil: :motz:

Cu,
Udontknow
schlachtenlenker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 35

Win XP
D5 Enterprise, d6 schüler
BeitragVerfasst: Mi 04.08.04 11:24 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
     try
        test:=strtoint(Edit1.Text);
     except
        on EConvertError do
        begin
             ShowMessage('ERROR');
             test:=1;
        end;
     end;


ja klar. ich hab mir dat durschgelesen und dann DAS da oben zu testzwecken gemacht. der bricht aba immer noch ab, und zwar mit der meldung

" in .. ist eine Exception der Klasse EConvertError aufgetreten. 'Edit1' ist kein gültiger integerwert ..."


Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt.

_________________
"Als Erwin die Ente sah, wusste er, das es ein schlechter Tag werden würde"
(T. Pratchett)
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 04.08.04 11:30 
Was heisst denn "Abbrechen"? Das die IDE das Prg anhält ist ganz natürlich. Abgebrochen wird da nur der Teil im Block!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
try
  r:=1/0; //Abbruch!
  r2:=4/2; //wird nicht mehr ausgeführt.
except
  ShowMessage('Oh mein Gott, eine Exception!');
end;
ShowMessage('Naja, gehts halt hier weiter...');


PS: Für deine Zwecke vielleicht eher was: Die Funktion StrToIntDef.

Cu,
Udontknow
schlachtenlenker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 35

Win XP
D5 Enterprise, d6 schüler
BeitragVerfasst: Mi 04.08.04 11:39 
die is zwar recht praktisch, aba nich das richtige.

:oops:
hab aba gemerkt, das wenn ich die exe ausführe, klappts so wie ich will...
:oops:

ich sollte vielleicht vor den nächsten posts etwas mehr test.... :roll:

_________________
"Als Erwin die Ente sah, wusste er, das es ein schlechter Tag werden würde"
(T. Pratchett)
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 04.08.04 11:48 
Ne, du solltest dich mit den Einstellungen der Delphi IDE beschäftigen. Es gibt dort nämlich eine Einstellung "Bei Delphi Exeptions stoppen". Wenn die aktiviert ist, werden Exeptions auch angezeigt, selbst wenn sie in einem try...except Block stehen. Machste bei der Option den Haken weg, werden deine Fehlerbehandlungsroutinen normal durchgeführt. Unter D7 findest du das ganze unter Tools - Debugger-Optionen - Sprach-Exeptions
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 04.08.04 11:52 
Würde ich aber nicht empfehlen, da man dann eben auch alle anderen Meldungen "verpasst".
Das beste ist es eigentlich, Exceptions nur für unvorhergesehene Fälle einzusetzen. Wenn du weisst, das eine Situation so eintreten wird, versuche sie vor einer eventuellen Exception zu erkennen (in diesem Fall vielleicht durch eine Funktion StringIsInteger).

Cu,
Udontknow
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 04.08.04 11:55 
Ja, schon klar. Nur mir ging es am Anfang auch so, dass ich die try...except Blöcke einfach deshalb nie verstanden habe, weil sie auf Grund dieser Option nie in Kraft traten, was mich immer sehr stark irritiert hat. Deshalb sage ich es ;)
generell sollte man sich anschauen, was Delphi für Exceptions auslöst.
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 04.08.04 12:07 
Ja stimmt, das ist verwirrend. Man muss sich da vor Augen halten, daß sie ja in Kraft treten, nur wird eben in Delphi zusätzlich noch das Programm gestoppt.

Da fällt mir übrigens gerade noch eine andere Möglichkeit ein: Du kannst das Verhalten eines Breakpoints dahin gehend verändern, daß nicht mehr bei einem BP gestoppt wird sondern stattdessen nachfolgende Exceptions ignoriert werden. 5 Zeilen später beispielsweise kann man dann wieder einen BP setzen, der dann das Flag "nachfolgende Exceptions behandeln" hat.

Einfach Breakpoint setzen, dann mit der rechten Maustaste über dem BP klicken, "Haltepunkt-Eigenschaften" aufrufen und dann auf "erweitert" klicken.

Cu,
Udontknow