Entwickler-Ecke
Dateizugriff - E/A - Fehler 32
SimonSchlüter - Do 14.07.11 08:18
Titel: E/A - Fehler 32
Hallo zusammen!
Ich hoffe es kann mir hier jemand helfen.
Mein Delphi-Programm ( Delphi 5 ) arbeitet mit Dateizugriffen.
Es lief lange Zeit unter Windows XP Home ohne Probleme.
Jetzt bekomme ich plötzlich bei jedem Dateizugriff "E/A - Fehler 32".
Was der Fehler bedeutet weiß ich bereits, ich kann mir leider nur nicht erklären, warum es auf einmal nicht mehr funktioniert.
Vielen Dank schonmal im Voraus!
Horschdware - Do 14.07.11 09:50
Dieser Fehler deutet darauf hin, dass die Datei noch geöffnet ist, d.h. ein Handle darauf noch offen ist.
Um genau sagen zu können, warum und wo genau der Fehler auftritt, wäre wohl ein wenig Code sinnvoll. Vergisst du eventuell die Datei nach Bearbeitung wieder zu schliessen?
Delete - Do 14.07.11 10:58
Ohmmmmmmmmmmmmmmmmmmmmmmmmm
Der Blick in meine Glaskugel sagt mir, dass du die Dateizugriffsvariable global deklariert hast und inzwischen den Überblick verloren hast, wo du die Datei öffnest und wieder schließt. Deswegen soll man solche Variablen nur lokal deklarieren. Oder wenn sie von mehreren Routinen benötigt wird, diese in eine Klasse kapseln und die Dateizugriffsvariable zu einem Attribut der Klasse machen.
SimonSchlüter - Do 14.07.11 11:17
Also die Variablen sind nicht global deklariert.
Das Programm hat auch (ohne Änderung) lange funktioniert.
Hier die Procedure:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| procedure savecfgline(betrieb : Integer; filename,name,value : String); var f : Textfile; arr : Array[1..3000] of string; line,lines,i : Integer; begin if betrieb <= 0 then chdirtoApppath else chdirtoBetrpath(betrieb); assignfile(f,filename); if fileexists(filename) then begin reset(f) end else begin rewrite(f); reset(f); end; lines:=0; while not eof(f) do begin inc(lines); readln(f,arr[lines]); end; closefile(f);
line:=-1; if lines>0 then for i:=1 to lines do if uppercase(name)=uppercase(copy(arr[i],1,pos(':',arr[i])-1)) then line:=i; if line=-1 then begin inc(lines); line:=lines; end;
arr[line]:=name+': '+value;
Rewrite(f); append(f); for i:=1 to lines do writeln(f,arr[i]); flush(f); closefile(f); end; |
Die Datei liegt in einem Unterverzeichnis des Programmverzeichnisses.
Delete - Do 14.07.11 11:50
Es lief unter Windows XP Home? Und unter welchen Windows läuft es jetzt nicht mehr?
SimonSchlüter - Do 14.07.11 11:53
Unter dem selben System. Das Programm lief vor ein paar Tagen noch. Jetzt läuft es nicht mehr.
Delete - Do 14.07.11 12:02
Hast du am System oder am Programm was geändert? Wenn du am Programm was geändert hast, dann mache die Änderungen mal Schritt für Schritt rückgängig.
jaenicke - Do 14.07.11 12:03
SimonSchlüter hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| if fileexists(filename) then begin reset(f) end else begin rewrite(f); reset(f); end; | |
Dann existierte die Datei bisher immer. Denn zuerst die Datei mit Rewrite öffnen und dann ein zweites Mal mit Reset öffnen kann nicht funktionieren...
SimonSchlüter hat folgendes geschrieben : |
Die Datei liegt in einem Unterverzeichnis des Programmverzeichnisses. |
Aua... :shock:
http://www.delphi-library.de/viewtopic.php?p=548600
SimonSchlüter - Do 14.07.11 12:06
Ok Danke für den Tipp. Ich werde das reset(f); rausnehmen und es mal ausprobieren und melde mich gleich wieder....
Delete - Do 14.07.11 12:41
Ja, aber bei mir wird es gar nicht funktionieren, wenn ich das Programm installiere bzw. dahin kopiere, wo es hin gehört, nämlich in das Programmverzeichnis. denn im Gegensatz zu dir arbeite ich nicht als Administrator aus Sicherheitsgründen an meinem Rechner. Und als Benutzer mit eingeschränkten Rechten hat man im Programmverzeichnis keine Schreibrechte.
\me fragt sich, wie viele Jahre und wie viele Windows Versionen es noch braucht, bis sich das endlich mal rumgesprochen hat. :roll:
SimonSchlüter - Do 14.07.11 12:43
Luckie hat folgendes geschrieben : |
Ja, aber bei mir wird es gar nicht funktionieren, wenn ich das Programm installiere bzw. dahin kopiere, wo es hin gehört, nämlich in das Programmverzeichnis. denn im Gegensatz zu dir arbeite ich nicht als Administrator aus Sicherheitsgründen an meinem Rechner. Und als Benutzer mit eingeschränkten Rechten hat man im Programmverzeichnis keine Schreibrechte.
\me fragt sich, wie viele Jahre und wie viele Windows Versionen es noch braucht, bis sich das endlich mal rumgesprochen hat. :roll: |
Ah ja OK danke sehr Konstruktiv!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!