| Autor |
Beitrag |
schlachtenlenker
      
Beiträge: 35
Win XP
D5 Enterprise, d6 schüler
|
Verfasst: 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
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mi 04.08.04 11:17
Schon mal in die Delphi-Hilfe gekuckt??!!!!
Cu,
Udontknow
|
|
schlachtenlenker 
      
Beiträge: 35
Win XP
D5 Enterprise, d6 schüler
|
Verfasst: Mi 04.08.04 11:24
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 Peter Lustig: Code- durch Delphi-Tags ersetzt.
_________________ "Als Erwin die Ente sah, wusste er, das es ein schlechter Tag werden würde"
(T. Pratchett)
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: 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!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| try r:=1/0; r2:=4/2; 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 
      
Beiträge: 35
Win XP
D5 Enterprise, d6 schüler
|
Verfasst: Mi 04.08.04 11:39
die is zwar recht praktisch, aba nich das richtige.
hab aba gemerkt, das wenn ich die exe ausführe, klappts so wie ich will...
ich sollte vielleicht vor den nächsten posts etwas mehr test.... 
_________________ "Als Erwin die Ente sah, wusste er, das es ein schlechter Tag werden würde"
(T. Pratchett)
|
|
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: 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
|
|