Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi E/A Fehler bei Reset (https://www.delphipraxis.net/205119-e-fehler-bei-reset.html)

venice2 3. Aug 2020 16:17

E/A Fehler bei Reset
 
Delphi-Quellcode:
procedure TraceDebug(Msg: PWideChar);
var
  FileName: string;
begin

  FileName := ExtractFilePath(ParamStr(0)) + 'Debug.txt';

  AssignFile(txtTracer, FileName);
  if FileExists(FileName) then
    Reset(txtTracer)
  else
  Rewrite(txtTracer);

  Append(txtTracer);
  WriteLn(txtTracer, Msg);
  CloseFile(txtTracer);

end;
Delphi-Quellcode:
txtTracer: TextFile; // global


Bekomme einen Ein und Ausgabe Fehler bei Reset.
Die Datei ist gerade mal 11 KB groß und ist vorhanden. (unter 'Dokumente' abgelegt)

Wo liegt der Fehler?

DeddyH 3. Aug 2020 16:22

AW: E/A Fehler bei Reset
 
Wieso 2 mal AssignFile?

venice2 3. Aug 2020 16:22

AW: E/A Fehler bei Reset
 
Zitat:

Zitat von DeddyH (Beitrag 1471062)
Wieso 2 mal AssignFile?

Jo Copy Paste Fehler hier.
Korrigiert.

Problem besteht aber weiterhin.

himitsu 3. Aug 2020 16:25

AW: E/A Fehler bei Reset
 
Welcher E/A-Fehler? (FehlerCode)

Außerdem ist dringend davon abzuraten AssignFile mehrmals hintereinander auszuführen.
(syntaktisch könnte man es fast mit mehrmaligem
Delphi-Quellcode:
txtTracer := TTextFile.Create
vergleichen)

Und wieso Append nach Reset/Rewrite?
Wenn, dann vorher/dazwischen das CloseFile nicht vergessen, bzw. direkt
Delphi-Quellcode:
if FileExists(FileName) then Append(txtTracer) else Rewrite(txtTracer);
.

Amateurprofi 3. Aug 2020 16:31

AW: E/A Fehler bei Reset
 
Delphi-Quellcode:
FileName := ExtractFilePath(ParamStr(0)) + 'Debug.txt';
Ergibt 'Programmverzeichnis\Debug.txt'.
Liegt die .Exe auch in "Dokumente" ?

venice2 3. Aug 2020 16:33

AW: E/A Fehler bei Reset
 
Zitat:

Welcher Fehler-Code?
Ein und Ausgabe . Oder was meinst du sonst.

Zitat:

Außerdem ist dringend davon abzuraten AssignFile mehrmals hintereinander auszuführen.
Ja ist Original nicht so war ein copy\paste Fehler hier im Forum.

Delphi-Quellcode:
procedure TraceDebug(Msg: PWideChar);
var
  FileName: string;
begin

  FileName := ExtractFilePath(ParamStr(0)) + 'Debug.txt';

  AssignFile(txtTracer, FileName);
  if FileExists(FileName) then
    Append(txtTracer)
  else
  Rewrite(txtTracer);

  WriteLn(txtTracer, Msg);
  CloseFile(txtTracer);

end;
Es bleibt beim Fehler. EInOutError E/A-Fehler 32

venice2 3. Aug 2020 16:35

AW: E/A Fehler bei Reset
 
Zitat:

Zitat von Amateurprofi (Beitrag 1471065)
Delphi-Quellcode:
FileName := ExtractFilePath(ParamStr(0)) + 'Debug.txt';
Ergibt 'Programmverzeichnis\Debug.txt'.
Liegt die .Exe auch in "Dokumente" ?

Ja im Programmverzeichnis.
Die ersten 11 KB werden ja gespeichert\geschrieben nur danach nicht mehr.

Thread Problem ? PWideChar oder was könnte das verursachen.

Amateurprofi 3. Aug 2020 16:51

AW: E/A Fehler bei Reset
 
Im INet gefundenhttps://entwickler-ecke.de/topic_IO+...2_99901,0.html

Zitat:

Luckie
BeitragVerfasst: Fr 04.06.10 12:48

Meine Glaskugel sagt mir, dass du die Dateivariable unnötigerweise global deklariert hast. Und jetzt bist du beim Öffnen und Schlissen durcheinander gekommen. Deklarier die Dateivariable lokal und öffne und schließe die Datei in der Routine, in der auch in die Datei geschrieben oder gelesen wird. Damit kannst du solche Fehler vermeiden.

Oder aber die Datei ist noch von einem anderen Programm exklusiv geöffnet. Aber da kann man nur raten, da du mit Informationen sehr sparsam bist.

_________________
Gruß Michael

himitsu 3. Aug 2020 16:56

AW: E/A Fehler bei Reset
 
Zitat:

Zitat von Windows-Hilfe für 32 = ERROR_SHARING_VIOLATION
The process cannot access the file because it is being used by another process.

https://www.delphipraxis.net/83346-e...2-ist-das.html


Zitat:

Thread Problem ?
Rufst du diese Funktion denn in unterschiedlichen Threads auf?
Wenn ja, warum dann ohne jegliche Synchronisation? (z.B. CriticalSection oder Dergleichen)

venice2 3. Aug 2020 17:05

AW: E/A Fehler bei Reset
 
Zitat:

Zitat von Amateurprofi (Beitrag 1471070)
Im INet gefundenhttps://entwickler-ecke.de/topic_IO+...2_99901,0.html

Zitat:

Luckie
BeitragVerfasst: Fr 04.06.10 12:48

Meine Glaskugel sagt mir, dass du die Dateivariable unnötigerweise global deklariert hast. Und jetzt bist du beim Öffnen und Schlissen durcheinander gekommen. Deklarier die Dateivariable lokal und öffne und schließe die Datei in der Routine, in der auch in die Datei geschrieben oder gelesen wird. Damit kannst du solche Fehler vermeiden.

Oder aber die Datei ist noch von einem anderen Programm exklusiv geöffnet. Aber da kann man nur raten, da du mit Informationen sehr sparsam bist.

_________________
Gruß Michael

Meine Glaskugel sagt mir das es nichts mit dem von dir geschilderten Problem zu tun hat.
Es spielt absolut keine rolle ob ich TextFile global deklariert habe es ist nur eine Vermutung deinerseits.
Wird nur in meiner DLL verwendet und geht nicht nach außen.

Zitat:

Rufst du diese Funktion denn in unterschiedlichen Threads auf?
Von meiner Exe über eine DLL und diese nutzt meine Tracer DLL zur Laufzeit.

Zitat:

The process cannot access the file because it is being used by another process.
Die soll ja offen bleiben oder welchen sinn macht sonst Append?
Sie wird ja auch geschlossen siehe CloseFile(txtTracer); nach jeder Aktualisierung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 Uhr.
Seite 1 von 2  1 2      

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