![]() |
Re: IOResult stimmt nach WriteLn nicht!
@hansa
warum ist der
Delphi-Quellcode:
block zu gross???
{$I-}
|
Re: IOResult stimmt nach WriteLn nicht!
Du unterdrückst Fehlermeldungen in ca. 20 Zeilen. Lediglich in einer wird überhaupt auf ioresult geprüft. Überhaupt relevant sind nur ca. 2-3. Siehe Luckies Beispiel. So macht man das normalerweise. Denn : geht das rewrite gut, dann wird es mit writeln, Closefile usw. auch gut gehen, zumindest in 99,9999 % der Fälle. Falls das rewrite schon nicht geht, dann kann man auf den Rest solange verzichten, bis der Fehler beseitigt ist. Sonderfall wäre folgender (habe ich noch niemals irgendwo gesehen) : rewrite geht gut und anschließendes writeln oder Closefile nicht. In solchen Fällen MUSS eine Fehlermeldung kommen. Fehler wegzaubern, das nützt nichts. :P
P.S.: sehe gerade, Luckie hat den Compilerschalter {$I+} usw. zum Kommentar {I+} gemacht. Nicht, dass sich das noch einer 1:1 rauskopiert. :mrgreen: P.S.2 : Mittlerweile gesehen, dass die Datei in keiner Weise geöffnet wurde ? |
Re: IOResult stimmt nach WriteLn nicht!
@hansa
hmm ok des leuchtet ein :mrgreen: Zitat:
|
Re: IOResult stimmt nach WriteLn nicht!
Ne, ist schon richtig so. Habe das Append übersehen.
|
Re: IOResult stimmt unter Vista nicht!?
Kann es sein, dass diese Variante nicht unter Windows Vista funktioniert?
Speziell interessiert mich die Abfrage, ob z.B. in den Programmeordner geschrieben werden kann. Hier einmal die Kurzvariante zum Testen:
Delphi-Quellcode:
Bei den gewohnten Verzeichnissen, wie CD-Laufwerke, nicht beschreibbare Medien funktioniert es. Nur nicht unter Vista, wenn man als Nicht-Admin versucht ins Programmverzeichnis zu schreiben. Die angegebene Datei ist vor dem CloseFile() auch nicht vorhanden, obwohl ioresult=0 zurück gegeben wurde...
var
F : TextFile; tmp : integer; begin try AssignFile(F, Ordner + Dateiname); {$I-} ReWrite(F); {$I+} tmp := ioresult; if tmp = 0 then begin // erfolgreich showmessage('ioresult='+inttostr(tmp)); Result := true; CloseFile(F); end else begin // nicht erfolgreich showmessage('peng! ioresult='+inttostr(tmp)); Showmessage('In den angegebenen Ordner kann nicht geschrieben werden!'); Result := false; end; finally If FileExists(Ordner + Dateiname) then DeleteFile(Ordner + Dateiname); end; end; Ich verzweifle schon fast... :evil: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 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