Einzelnen Beitrag anzeigen

TM6

Registriert seit: 14. Dez 2004
61 Beiträge
 
Delphi 12 Athens
 
#1

{$i-} - {$iochecks off}

  Alt 31. Mär 2025, 07:57
Delphi-Version: 5
Ich habe eine Verständnisfrage.
Ich bin immer davon ausgegangen, dass es bei der Verwendung von {$I-} keine Exception geben würde, da diese von Delphi abgefangen wird und ich den Fehlercode über IOResult erhalte.
Ich sichere MeinString <> '' vorher ab (Delphi-Hilfe von ForceDirectories) und es gibt in bestimmten Fällen trotzdem eine IO-Exception.

Code:
exception class           : EInOutError
exception message         : Verzeichnis kann nicht erstellt werden.
Delphi-Quellcode:
if MeinString = 'then exit;

{$I-}SysUtils.ForceDirectories( MeinString );{$I+}
error := IOResult;
if ( error = 0 )
then ...
else ...
Ist trotz {$I-} immer ein try .. except notwendig, und {$I-} ist nur eine Erleichterung, den Fehlercode auszuwerten?

Das ist aber in der Hilfe anders formuliert bzw. interpretiere ich das anders:

Zitat:
Anmerkungen

Mit der Direktive $I wird die automatische Code-Generierung aktiviert bzw. deaktiviert, die nach jedem Aufruf einer E/A-Prozedur das Ergebnis überprüft. Eine ausführliche Beschreibung der E/A-Prozeduren finden Sie in der Delphi-Sprachreferenz. Wenn eine E/A-Prozedur bei aktivierter Option ein Ergebnis ungleich 0 zurückgibt, führt dies zu einer EInOutError-Exception (bzw. zum Programmabbruch, wenn die Exception-Behandlung nicht aktiviert ist). Ist die Option deaktiviert, muss die E/A-Operation durch einen Aufruf von IOResult auf Fehler geprüft werden.
Das Problem tauchte bei mir auf, als ich auf einen Ordner in den eigenen Dateien zugreifen wollte
Code:
SysUtils.ForceDirectories( TPath.GetDocumentsPath + '\MeinUnterordner' )
und die Windows-API einen leeren String zurücklieferte.
Siehe dazu meine Frage in
https://www.delphipraxis.net/216958-...e-dateien.html
  Mit Zitat antworten Zitat