Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Pascal:ExceptionHandling bei Dateiarbeit (https://www.delphipraxis.net/46706-pascal-exceptionhandling-bei-dateiarbeit.html)

Lordy 30. Mai 2005 10:03


Pascal:ExceptionHandling bei Dateiarbeit
 
Hi,

stehe vor folgendem Problem:
Ich muss in Pascal eine Datei öffnen die durch den User bestimmt wird.
Dabei kann es ja sein das die Datei bereits geöffnet ist, nicht vorhanden oder so.
Gibt es eine Möglichkeit direkt auf die unterschiedlichen Exceptions zu reagieren?


Habe mir folgendes Überlegt:


assign(f,name);

Delphi-Quellcode:
try
reset(f);
EXCEPT
                                                 
   writeln('Es ist ein Fehler aufgetreten');
//   Wie kann ich hier überprüfen welcher Fehler aufgetreten ist und verhindern
//   das sich mein Programm bei falsches Eingabe sofort beendet?
finally;
close(f);

Danke im Vorraus

P.S: Gibts irgendwo eine Sprachreferenz für Pascal wo ich solche Dinge wie unterschiedliche Exceptions und so mal nachlesen kann?

alcaeus 30. Mai 2005 10:05

Re: Pascal:ExceptionHandling bei Dateiarbeit
 
Hallo Lordy,

Fehler bei Dateioperationen musst du mit Hilfe der Schalter {$I-} und {$I+} sowie der Funktion Delphi-Referenz durchsuchenIOResult abfragen. Guck dir einfach die Hilfe zu IOResult an, dort gibts auch ein Beispiel.

Greetz
alcaeus

Lordy 30. Mai 2005 10:52

Re: Pascal:ExceptionHandling bei Dateiarbeit
 
Das hatte ich früher auch mal so:

Delphi-Quellcode:
assign(f,name);
{$I-}

reset(f);
fehlercode:=ioresult;
writeln(fehlercode);
close(f);
{$I+}
end;
Das Problem ist, das Programm wird sofort beendet, sobald ein Fehler auftritt, man sieht also nicht, welcher
Fehler aufgetreten ist.

Hat da jemand eine Idee?

barf00s 30. Mai 2005 11:02

Re: Pascal:ExceptionHandling bei Dateiarbeit
 
dann machst du dir noch ein "ReadLn;" nach dem WriteLn(fehlercode); rein :)

Muetze1 30. Mai 2005 11:31

Re: Pascal:ExceptionHandling bei Dateiarbeit
 
Moin!

Delphi-Quellcode:
  assign(f,name);
  {$I-}
  reset(f);
  {$I+}
  fehlercode:=ioresult;

  If ( Fehlercode <> 0 ) Then
  Begin
    writeln(fehlercode);
    ReadLn;
  End;
 
  If ( fehlercode = 0 ) Then
    close(f);
end;
Ansonsten, wenn man es unter Delphi nutzt, kann man dem Nutzer dank Windows auch eine Klartextmeldung präsentieren:

Delphi-Quellcode:
  assign(f,name);
  {$I-}
  reset(f);
  {$I+}
  fehlercode:=ioresult;
 
  If ( Fehlercode <> 0 ) Then
    ShowMessage( SysErrorMessage( Fehlercode ) );
 
  If ( fehlercode = 0 ) Then
    close(f);
MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 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