Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - If Exception = EOverFlow then?
Mitmischer 1703 - Mi 16.01.08 19:28
Titel: If Exception = EOverFlow then?
Hi zusammen!
Dieser Quelltext funktioniert nicht :(, und zwar in Zeile 4: Inkompatible Typen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception); begin If E = EOverflow then Application.MessageBox ('Gleitkommaüberlauf. Bitte verkleinern Sie ihre Zahl.', 'Rechner', MB_OK+MB_ICONHAND) Else Begin Application.MessageBox('Diese Exception wurde vom Programmierer noch nicht implementiert. Melden Sie folgende Fehlermeldung:', 'Rechner', MB_OK + MB_ICONHAND); Application.ShowException(E); end; |
Da das ja nicht zu funktionieren scheint, wollte ich fragen: Wie kann ich auf abgefangene Exceptions (Wegen dem ApplicatioEvents :wink:) im Nachhinein mit If reagieren?
Mitmischer 1703 - Mi 16.01.08 19:34
Titel: Re: If Exception = EOverFlow then?
Hab's!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception); begin If String (E) = EOverflow then Application.MessageBox ('Gleitkommaüberlauf. Bitte verkleinern Sie ihre Zahl.', 'Rechner', MB_OK+MB_ICONHAND) Else Begin Application.MessageBox('Diese Exception wurde vom Programmierer noch nicht implementiert. Melden Sie folgende Fehlermeldung:', 'Rechner', MB_OK + MB_ICONHAND); Application.ShowException(E); end; |
Ist allerdings nicht gerade elegant... :crying:
Yogu - Mi 16.01.08 19:59
Wie wäre es, wenn du einfach den Klassentyp abfragst? Zum Beispiel mit E.ClassType... Eine Exception ist nämlich auch eine Klasse mit den Klassenmethoden.
Mitmischer 1703 - Mi 16.01.08 20:59
Also so :? ?
Delphi-Quelltext
1:
| If E.Classname = EOverflow then |
Yogu - Mi 16.01.08 21:14
Jep, genau so. Das funktioniert doch, oder?
Xentar - Mi 16.01.08 21:31
Wäre dann nicht die "schönere" Lösung
Delphi-Quelltext
1:
| if E is EOverflow then ... |
?
Yogu - Mi 16.01.08 22:04
Ich arbeite eher weniger mit is und as, aber natürlich ist das noch schöner :zustimm:
Ich persönlich finde andere Möglichkeiten zur Lösung übersichtlicher. Zum Beispiel verwende ich TObject(Instance) statt Instance as TObject.
Mitmischer 1703 - Do 17.01.08 15:57
Titel: OffTopic
Obwohl wir jetzt OffTopic werden: Welchen Sinn haben is und as? :?!?:
JayEff - Do 17.01.08 17:26
Sie erhöhen zumindest mal die Lesbarkeit! Objekt as klasse ist einfacher zu lesen als der typecast Klasse (Objekt) finde ich.
(Vgl. Ruby : 5.times do macht das selbe wie for i := 1 to 5 do in Delphi. Da ist Ruby lesbarer ;) (trotzdem mag ich ruby nicht.))
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!