Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi E/A Fehler abfangen? (https://www.delphipraxis.net/14287-e-fehler-abfangen.html)

Pseudemys Nelsoni 6. Jan 2004 11:48


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

Sharky 6. Jan 2004 11:50

Re: E/A Fehler abfangen?
 
Hai Pseudemys,

schau dir mal die Hilfe zu TRY-EXCEPT an.

Pseudemys Nelsoni 6. Jan 2004 11:54

Re: E/A Fehler abfangen?
 
hoi Sharky,

das problem ist, das ich nicht weiss von welchem Typ der fehler "E/A-Fehler 32" ist :\

scp 6. Jan 2004 11:56

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;

Sharky 6. Jan 2004 11:57

Re: E/A Fehler abfangen?
 
Ich tippe mal auf einen EInOutError.

sakura 6. Jan 2004 11:58

Re: E/A Fehler abfangen?
 
Hi Scrapt,

das kannst Du recht einfach rausbekommen...
Delphi-Quellcode:
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;
...:cat:...

Pseudemys Nelsoni 6. Jan 2004 12:06

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 :)

scp 6. Jan 2004 12:12

Re: E/A Fehler abfangen?
 
Zitat:

Zitat von Pseudemys Nelsoni

@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 :)

Ist auch die bessere Alternative. :-)

Luckie 6. Jan 2004 13:19

Re: E/A Fehler abfangen?
 
Zitat:

Zitat von scp
Ist auch die bessere Alternative. :-)

Ich würde fast sagen unnötiger try-execept-Block. Ich hätte es so gemacht:
Delphi-Quellcode:
{I-}
  ...;
{I+}
if IOResult <> 0 then
  RaiseLastOSError();
Dann weiß man auch, was schiefgegangen ist.

scp 6. Jan 2004 18:51

Re: E/A Fehler abfangen?
 
Hast ja auch wieder recht. Dachte nur es wäre VCL/OP-konformer :lol:

Luckie 7. Jan 2004 00:55

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:
try
  i := IntToStr(Value);
  result := True
except
  result := False;
So und jetzt die Preisfrage an alle: Wie macht man es richtig bzw. eleganter ohne try-except-Block? :zwinker:


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