![]() |
Exception lässt sich nicht abfangen...
Guten Morgen,
ich verzweifle hier an einer eigentlich simplen Sache (dachte ich) :wall: :
Code:
Nun entsteht beim Aufruf von Val z.B. ein EOverflow. Leider rauscht Delphi7 dann gleich durch: Im Debugger wird die Zeile zwischen Except und End schlicht ignoriert und erst in der globalen Routine meldet sich D7 wieder zu Wort. Finde ich nicht so witzig, denn eigentlich ist dies keine Exception, die dem Anwender so stumpf vor den Kopf gehauen werden soll, sondern ich würde bei Result:=0 gerne eine Meldung der Form "Ihre Eingabe ist nicht korrekt: ..."anzeigen.
BEGIN
ValFormat(S); TRY Val(S,Result,c); EXCEPT Result:=0; END; END; Wie fängt man eine Exception bei VAL ab? Oder wie sonst kann man sicher(!) einen eventuell total chaotischen String in einen Wert umwandeln? Danke für jeden Tipp. Hepdepaddel |
Re: Exception lässt sich nicht abfangen...
Hallo,
um einen String in eine Zahl zu wandeln und davor die Eingabe prüfen, geht mittels einer dieser Funktionen ganz gut: ![]() ![]() ![]() ![]() Val nutze ich nie, kenne mich damit daher nicht so aus. |
Re: Exception lässt sich nicht abfangen...
Ich weiß nicht, wie bei dir val eine Exception auslösen kann. Ob der String konvertiert werden konnte oder nicht, wird in dem var Parameter Code zurückgegeben: 0 -> hat geklappt, <> 0 -> hat nicht geklappt.
Delphi-Quellcode:
Selbst wenn ich schreibe s := '99999999999999999999999999999999999999999';, komnmt keine EOverFlow-Exception.
procedure TForm1.Button1Click(Sender: TObject);
var s: String; V: Integer; Code: Integer; begin s := 'xyz999999999999'; try val(s, V, Code); ShowMessage(IntToStr(V)); except on E: Exception do ShowMessage(E.Message); end; end; |
Re: Exception lässt sich nicht abfangen...
ich hab eher die Vermutung das die Exception bei "ValFormat" kommt (denn wie bereits geschrieben kommt bei "Val" keine). Und ValFormat ist nicht in Try-Except.
|
Re: Exception lässt sich nicht abfangen...
Ha - Val erzeugt tatsächlich keine. Mein Debugger hat zwar etwas anderes angezeigt, aber das war nicht reproduzierbar. Schuld war eine Verpnüpfung eines Eingabefeldes mit einem TDataset - und dort wurde dann parallel versucht, den Wert zu wandeln.
Man sollte manchmal einfach früher ins Bett gehen (heute aber nicht) - vielen Dank an alle! Gruß Hepdepaddel |
Re: Exception lässt sich nicht abfangen...
Zitat:
|
Re: Exception lässt sich nicht abfangen...
Tritt das Phänomen auch auf, wenn Du das Programm nicht aus der Delphi IDE heraus startest?
Ansonsten könntest Du mal auf die Debugger-Optionen gehen, dort auf den Reiter "Sprach-Exceptions" und die untere Checkbox "Bei Delphi-Exceptions" stoppen demarkieren. Vielleicht solltest Du auch in den Except Teil, dort wo Du Result := 0 setzt mal eine ShowMessage einbauen, wir wissen ja nicht ob Du vorher deine Result Variable auch schon auf 0 gesetzt hast und somit eventuell eine Compiler-Optimierung zum tragen kommt. [Edit] Upps ... habe überlesen, dass das Problem schon gelöst war. [/Edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz