Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi IOResult stimmt nach WriteLn nicht! (https://www.delphipraxis.net/83100-ioresult-stimmt-nach-writeln-nicht.html)

Andidreas 27. Dez 2006 17:15

Re: IOResult stimmt nach WriteLn nicht!
 
@hansa

warum ist der
Delphi-Quellcode:
{$I-}
block zu gross???

Hansa 27. Dez 2006 17:30

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 ?

Andidreas 27. Dez 2006 17:58

Re: IOResult stimmt nach WriteLn nicht!
 
@hansa

hmm ok des leuchtet ein :mrgreen:

Zitat:

Zitat von Hansa
P.S.2 : Mittlerweile gesehen, dass die Datei in keiner Weise geöffnet wurde ?

meinst du mein code bsp. damit was ich gepostet hab???

Hansa 27. Dez 2006 18:12

Re: IOResult stimmt nach WriteLn nicht!
 
Ne, ist schon richtig so. Habe das Append übersehen.

amigage 3. Apr 2007 17:52

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:
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;
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...

Ich verzweifle schon fast... :evil:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 Uhr.
Seite 2 von 2     12   

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