Autor |
Beitrag |
SimonSchlüter
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 14.07.11 08:18
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
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: 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?
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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 
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 14.07.11 11:17
Also die Variablen sind nicht global deklariert.
Das Programm hat auch (ohne Änderung) lange funktioniert.
Hier die Procedure:
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.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 14.07.11 11:50
Es lief unter Windows XP Home? Und unter welchen Windows läuft es jetzt nicht mehr?
|
|
SimonSchlüter 
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 14.07.11 11:53
Unter dem selben System. Das Programm lief vor ein paar Tagen noch. Jetzt läuft es nicht mehr.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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
      
Beiträge: 19315
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 14.07.11 12:03
|
|
SimonSchlüter 
Hält's aus hier
Beiträge: 6
|
Verfasst: 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....
|
|
SimonSchlüter 
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 14.07.11 12:24
[/quote]Aua...
www.delphi-library.d...ewtopic.php?p=548600[/quote]
Daran liegt es nicht. Wenn ich das Programm in das Benutzerverzeichnis installiere oder auf D:\ funktioniert es genau so wenig.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: 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. 
|
|
SimonSchlüter 
Hält's aus hier
Beiträge: 6
|
Verfasst: Do 14.07.11 12:43
|
|