![]() |
E/A Fehler abfangen?
hoi,
im board habe ich nichts zu einem ea fehler gefunden, kann mir jemand sagen wie ich den fehler abfange? on E/A-Fehler 32 do... geht ja natürlich nicht |
Re: E/A Fehler abfangen?
Hai Pseudemys,
schau dir mal die Hilfe zu TRY-EXCEPT an. |
Re: E/A Fehler abfangen?
hoi Sharky,
das problem ist, das ich nicht weiss von welchem Typ der fehler "E/A-Fehler 32" ist :\ |
Re: E/A Fehler abfangen?
Delphi-Quellcode:
var
IORes : integer; {$I-} //Hier Dateioperationen {$I+} IORes := IOResult; Case IORes Of 32: begin //Hier E/A-Fehler 32 behandeln end; else ShowMessage('E/A-Fehler ' + IntToStr(IORes)); end; |
Re: E/A Fehler abfangen?
Ich tippe mal auf einen EInOutError.
|
Re: E/A Fehler abfangen?
Hi Scrapt,
das kannst Du recht einfach rausbekommen...
Delphi-Quellcode:
...:cat:...
try
// hier richtig mist bauen except on E: Exception do // jetzt weißt Du auch wie die spezielle Klasse heißt ;-) ShowMessage(E.Classname); end; |
Re: E/A Fehler abfangen?
Scrapt?
danke an alle, =) also EInOutError wars. @scp: ist sicher ne gute lösung aber für mich (noch) zu kompliziert, zb das {I+} usw :\ habe mal sharkys möglichkeit benutzt, der code von sakura hats mir bestätigt :) |
Re: E/A Fehler abfangen?
Zitat:
|
Re: E/A Fehler abfangen?
Zitat:
Delphi-Quellcode:
Dann weiß man auch, was schiefgegangen ist.
{I-}
...; {I+} if IOResult <> 0 then RaiseLastOSError(); |
Re: E/A Fehler abfangen?
Hast ja auch wieder recht. Dachte nur es wäre VCL/OP-konformer :lol:
|
Re: E/A Fehler abfangen?
An sich ist es das ja auch. Aber man muss abwägen. Ich denke, ich muss dir nicht sagen, was ein try-except-Block für den Compiler, den resultierenden Sourcecode und nachher für die CPU bedeutet, die den Code ausführt.
Als erstes muss der Compiler sehr viel zusätzlichen Code erzeugen, dieser muss dann auch von der CPU abgearbeitet werden. Und wenn dann auch noch die Exception auftritt, stelle ich es mir immer so vor, als ob die CPU am schimpfen ist, wie ein Rohrspatz, weil sie letztendlich den ganzen Stack absuchen muss, nach dem Punkt, wo sie weitermachen kann. Iregendwie so war das. Ich muss das im Richter nochmal nachlesen oder wo das stand. Jedenfalls, wenn ich auch nicht genau weiß, wie Exception umgesetzt werden, weiß ich, dass sie für die CPU unheimlich viel Arbeit, Taktzyklen usw. bedeuten und das der Compiler ein Haufen zusätzlichen Code generieren muss. Deswegen versuche ich try-except-Konstrukte zu vermeiden und nur da zu nutzen wo es nicht anders geht. Mir stehen jedes mal die Haare zu Berge, wenn ich so was lese: "Wie kann ich überprüfen, ob es sich um ein Integer handelt?" Antwort:
Delphi-Quellcode:
So und jetzt die Preisfrage an alle: Wie macht man es richtig bzw. eleganter ohne try-except-Block? :zwinker:
try
i := IntToStr(Value); result := True except result := False; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:32 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