Autor Beitrag
Christoph Englmann
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Mi 17.08.05 14:18 
hallo,

hab folgenden code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
...
else begin
  try
    Wert := StrToInt(Test);
  except
    Wert := Test;
  end
end;
...


Wert ist als Variant definiert.

Problem:
wenn Test ein String ist, löst der try block den fehler "EConverterError" (kein gültiger integer Wert) aus, anstatt in den except block zu springen....

Delphi7 + WIN2000

danke
christoph
Fabian W.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Mi 17.08.05 14:56 
Das is irgendwie zu hoch für mich, stell deine Frage mal eindeutig - kann es sein dass du statt
Zitat:
wenn Test ein String ist

wenn Wert kein string ist
gemeint hast?

Auf alle Fälle: Der Debugger zeigt dir die Exception so, oder so an, nur sollte durch die Try Except Blöcke eine Fehlermeldung verhindert werden.
Christoph Englmann Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Mi 17.08.05 15:19 
ne, hab mich da schon richtig ausgedrückt:
wenn test ein string ist (also in der variable test ein string steht) dann erscheint die fehlermeldung zu laufzeit (natürlich nicht im debugger...)
JA, und except sollte eigentlich dies verhindern, tut es aber nicht...

danke
christoph
Fabian W.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Mi 17.08.05 15:35 
Bist du dir sicher, das schon der ExceptBlock ausgeführt wird und die fehlermeldung von nicht von diesem Codeteil stammt:Wert := Test;
Amiga-Fan
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 534



BeitragVerfasst: Mi 17.08.05 15:40 
oje :roll: benutz besser val und kein variant....

_________________
- Leg dich nie mit einem Berufsprogrammierer an
- Wahre Profis akzeptieren keine einfachen Lösungen
Christoph Englmann Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Mi 17.08.05 15:48 
hallo und danke,

also wie geschrieben:
der Fehler wird durch den try Block erzeugt und NICHT durch den except (handelt sich ja auch um EConverterError und nur im try Block wird konvertiert).

glaub mittlerweile auch, dass es am type variant liegt
(unter delphi 6 funktioniert der code einwandfrei)..

val ist aber doch kein variablentyp => welchen Variablentyp soll ich anstatt variant der variable wert geben?

danke
christoph
Christoph Englmann Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 276



BeitragVerfasst: Do 18.08.05 09:39 
hallo,

oh mann....
hier die lösung:
bei
Tools -> Debugger-Optionen -> Sprach-Exceptions -> Bei Delphi-Exceptions stoppen
muss das häckchen raus...


sorry
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 18.08.05 09:57 
Hallo!

Ich verweise mal auf diesen sehr ähnlichen Thread:

Exceptions zu ignorieren, indem man den Debugger nicht mehr halten lässt, wird man früher oder später bereuen.

Desweiteren prüft man nicht per try/except, ob ein String eine Integerzahl darstellt, sondern per StrToIntDef oder notfalls per eigener Prüfroutine. Alles andere ist schlechter Stil. Wenn du 5000 Exceptions auslöst, von denen eine nicht wie erwartet auftaucht, geht die Sucherei los.

Cu,
Udontknow