AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Error Code 183 beim Datei überschreiben mit Rewrite.
Thema durchsuchen
Ansicht
Themen-Optionen

Error Code 183 beim Datei überschreiben mit Rewrite.

Ein Thema von Thorben86 · begonnen am 6. Nov 2008 · letzter Beitrag vom 6. Nov 2008
Antwort Antwort
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#1

Error Code 183 beim Datei überschreiben mit Rewrite.

  Alt 6. Nov 2008, 15:53
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;
  Mit Zitat antworten Zitat
Benutzerbild von MSSSSM
MSSSSM

Registriert seit: 18. Apr 2008
223 Beiträge
 
Delphi 7 Professional
 
#2

Re: Error Code 183 beim Datei überschreiben mit Rewrite.

  Alt 6. Nov 2008, 16:30
da steht allerdings ein aufruf mit "r"!
Und da ist noch so ein AND...
Marius
  Mit Zitat antworten Zitat
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Error Code 183 beim Datei überschreiben mit Rewrite.

  Alt 6. Nov 2008, 16:32
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.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Error Code 183 beim Datei überschreiben mit Rewrite.

  Alt 6. Nov 2008, 16:46
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.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Error Code 183 beim Datei überschreiben mit Rewrite.

  Alt 6. Nov 2008, 17:04
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: Error Code 183 beim Datei überschreiben mit Rewrite.

  Alt 6. Nov 2008, 17:31
Zitat:
Du musst IOResult verwenden, um Fehlercodes zu erhalten
Würde ich auch mal meinen.


Delphi-Quellcode:
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;
( Ungetestet )
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Error Code 183 beim Datei überschreiben mit Rewrite.

  Alt 6. Nov 2008, 17:42
Ok, mit IOResult klappt es jetzt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz