![]() |
Error Code 183 beim Datei überschreiben mit Rewrite.
Ich habe das Problem, dass mir die Funktion Rewrite(f) beim überschreiben den Error Code 183: "Cannot create a file when that file already exists." wirft. Geschrieben wird die Datei trotzdem korrekt.
Da die Funktion ja extra zum überschreiben von Dateien da ist, wundert mich der Fehler doch ein wenig. Benutze Delphi 2005. Habe es auch schon ohne die beiden $IOChecks-Zeilen versucht. ich benutze folgende Funtion (müsste hier aus dem Forum kommen, wenn mich nicht alles täuscht) zum schreiben der Datei:
Delphi-Quellcode:
function WriteData(filename : String; data: String; mode : TMode): Integer;
var f: TextFile; begin {$IOChecks OFF} AssignFile(f,filename); if (FileExists(filename) and (mode = a) ) then Append(f) else Rewrite(f); //Hier ist GetLastError() = 183 Writeln(f, data); CloseFile(f); result := GetLastError(); {$IOCHECKS ON} end; Aufruf: if SaveDialog1.Execute then begin err := WriteData(SaveDialog1.Filename, data, r); if (err <> 0) then Showmessage ('Errorcode: '+ inttostr(err)+#13#10+SysErrorMessage(err)); end; |
Re: Error Code 183 beim Datei überschreiben mit Rewrite.
da steht allerdings ein aufruf mit "r"!
Und da ist noch so ein AND... :twisted: |
Re: Error Code 183 beim Datei überschreiben mit Rewrite.
TMode kann entweder a oder r sein. Und er soll die datei ja auch überschreiben (Mode = r --> <> a), von daher sollte das eigentlich korrekt sein.
ich könnte auch das ganze If rausnehmen und nur das rewrite stehen lassen, da kommt der Fehler trotzdem. |
Re: Error Code 183 beim Datei überschreiben mit Rewrite.
Hallo,
stimmt, der letzte Fehler ist 183, aber das heißt nicht, dass die Datei nicht neu erstellt wurde, sondern nur, das irgendwo "unterwegs" mal der Fehler 183 aufgetreten ist und zwar bei der Prüfung von Rewrite, ob's die Datei schon gibt oder nicht. Wenn ich Deinen Quelltext nehme und eine Datei erstelle, so erhalte ich jedes Mal diese Fehlermeldung und jedes Mal eine neue Datei. |
Re: Error Code 183 beim Datei überschreiben mit Rewrite.
Grundsätzlich kann GetLastError jeden Wert annehmen, wenn die Api-Funktion True zurückgibt (Ausnahmen bestätigen die Regel). Wenn du die Pascal-Routinen verwendest, wird GetLastError vollkommen irrelevant. Du musst IOResult verwenden, um Fehlercodes zu erhalten.
|
Re: Error Code 183 beim Datei überschreiben mit Rewrite.
Zitat:
Delphi-Quellcode:
( Ungetestet )
function WriteData(filename : String; data: String; Mode : TMode): Boolean;
var f: TextFile; IOErr: integer; begin AssignFile(f, filename); {$IOChecks OFF} if FileExists(filename) and (Mode = a) then Append(f) else Rewrite(f); {$IOCHECKS ON} IOErr := IOResult; if IOErr = 0 then begin Writeln(f, data); end else ShowMessage('Ein Fehler ist aufgetreten ... ... Nr.: ' + IntToStr(IOErr)); CloseFile(f); Result := BOOLEAN(IOErr = 0); end; |
Re: Error Code 183 beim Datei überschreiben mit Rewrite.
Ok, mit IOResult klappt es jetzt ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 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