AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Exception lässt sich nicht abfangen...

Ein Thema von Hepdepaddel · begonnen am 14. Jan 2006 · letzter Beitrag vom 15. Jan 2006
Antwort Antwort
Benutzerbild von Hepdepaddel
Hepdepaddel

Registriert seit: 12. Dez 2005
Ort: Bremen
91 Beiträge
 
Delphi 2006 Enterprise
 
#1

Exception lässt sich nicht abfangen...

  Alt 14. Jan 2006, 00:36
Guten Morgen,

ich verzweifle hier an einer eigentlich simplen Sache (dachte ich) :

Code:
BEGIN
  ValFormat(S);

  TRY
    Val(S,Result,c);
  EXCEPT
    Result:=0;
  END;
END;
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.

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
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Exception lässt sich nicht abfangen...

  Alt 14. Jan 2006, 00:45
Hallo,

um einen String in eine Zahl zu wandeln und davor die Eingabe prüfen, geht mittels einer dieser Funktionen ganz gut: Delphi-Referenz durchsuchenStrToFloatDef, Delphi-Referenz durchsuchenStrToIntDef (Unit: SysUtils). Dazu steht auch etwas in der DP. Delphi-Referenz durchsuchenTryStrToInt bzw. Delphi-Referenz durchsuchenTryStrToFloat gibt es auch.

Val nutze ich nie, kenne mich damit daher nicht so aus.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Exception lässt sich nicht abfangen...

  Alt 14. Jan 2006, 01:50
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:
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;
Selbst wenn ich schreibe s := '99999999999999999999999999999999999999999';, komnmt keine EOverFlow-Exception.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Exception lässt sich nicht abfangen...

  Alt 14. Jan 2006, 10:12
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Hepdepaddel
Hepdepaddel

Registriert seit: 12. Dez 2005
Ort: Bremen
91 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Exception lässt sich nicht abfangen...

  Alt 14. Jan 2006, 22:33
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Exception lässt sich nicht abfangen...

  Alt 15. Jan 2006, 02:16
Zitat von SirThornberry:
ich hab eher die Vermutung das die Exception bei "ValFormat" kommt
Hab eich in meiner Delphi &6 Hilfe nicht gefunden, deswegen dachte ich, es sei eine selbst geschriebenen Prozedur und er wüßte, was er da macht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Exception lässt sich nicht abfangen...

  Alt 15. Jan 2006, 10:25
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]
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz