Autor Beitrag
SimonSchlüter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 14.07.11 11:17 
Also die Variablen sind nicht global deklariert.

Das Programm hat auch (ohne Änderung) lange funktioniert.

Hier die Procedure:

ausblenden volle Höhe 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..3000of string;
    line,lines,i  : Integer;
begin
  //Einlesen
  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);

  //Name suchen
  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;
  //Wenn nicht gefunden, anhängen
  if line=-1 then
  begin
    inc(lines);
    line:=lines;
  end;

  //Wert eintragen
  arr[line]:=name+': '+value;

  //Abspeichern
  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



BeitragVerfasst: Do 14.07.11 11:50 
Es lief unter Windows XP Home? Und unter welchen Windows läuft es jetzt nicht mehr?
SimonSchlüter Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 14.07.11 12:03 
user profile iconSimonSchlüter hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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...

user profile iconSimonSchlüter hat folgendes geschrieben Zum zitierten Posting springen:
Die Datei liegt in einem Unterverzeichnis des Programmverzeichnisses.
Aua... :shock:
www.delphi-library.d...ewtopic.php?p=548600
SimonSchlüter Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 14.07.11 12:24 
[/quote]Aua... :shock:
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



BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Do 14.07.11 12:43 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
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!