Autor Beitrag
matschmann
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 06.04.05 16:09 
Hallo,
ich habe ein Problem, bei dem ich absolut nicht weiterkomme (wahrscheinlich steh ich aber nur ziemlich auf dem Schlauch):

Ich habe zwei Funktionen in einer Klasse, die eine öffnet eine Datei, die andere speichert. Öffne ich eine Datei und will dann mit der writeFunktion die gleiche Datei ersetzen, dann krieg ich immer die Fehlermeldung 32.

Hier die beiden Funktionen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function TNuvemReader.writeNuvem(myFile:String):boolean;
Var j    : Word;
    F : TextFile;

Begin
 AssignFile(F,myFile);
 ReWrite(F);
 
 WriteLn(F,'Nuvem-S Vers. 0.1');
 [....]
 For j:=0 To length(werte)-1 Do
  WriteLn(F,Werte[j].zeit:12:7,'    ',
             Werte[j].weggeber[1]:5,'   ',
             Werte[j].weggeber[2]:5);
 CloseFile(F);
 result:=true; 

End;


ausblenden 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:
function TNuvemReader.readNuvem2File(myFile:String):boolean;
Var j  : Word;
    co,x : Integer;
    s  : String;
    So : TextFile;

Begin
  AssignFile(So,myfile);
  ReSet(So);


  ReadLn(So,s);             // Programmversion
  if s<>'Nuvem-S Vers. 0.1' then begin
    CloseFile(So);
    result:=false
  end else begin

    [....]

    For j:=0 To Pred(datenpunkte) Do
      ReadLn(So,werte[j].zeit,
                werte[j].weggeber[1],
                werte[j].weggeber[2]);

    CloseFile(So);
    result:=true;
  end;
 
End;



Moderiert von user profile iconraziel: Topic aus CLX / Delphi Language (Object-Pascal) verschoben am Mi 06.04.2005 um 16:39
Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
MAlsleben
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 303

W2k,WinXP
D3 - DXE3 Enterprise
BeitragVerfasst: Do 07.04.05 09:51 
Hi,

Fehlercode 32 bedeutet: Verletzung bei der gemeinsamen Benutzung .

Offenbar ist die Datei noch geöffnet, indem Moment wo Du sie mit rewrite überschreibst.

Gruß Micha.

_________________
Viele Wege führen nach Rom.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 07.04.05 10:00 
Sowas kann durch einen Programmabsturz oder ein vergessenes (oder nicht durchgeführtes bei einer Exception) CloseFile verursacht werden. Andere Möglichkeit: Du greifst mit zwei Programmen gleichzeitig darauf zu.
Theoretisch sollte ein Neustart des Rechners Abhilfe schaffen. Wenn die Datei nämlich erstmal gesperrt ist, gibt Windoof die so schnell nicht wieder frei.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 07.04.05 12:39 
Man braucht einfach nur alle Programme beenden, die auf die Datei zugreifen, dann räumt Windows automatisch aus und ginbt alle Kernelobjekct automatisch wieder frei.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 07.04.05 12:44 
user profile iconLuckie hat folgendes geschrieben:
Man braucht einfach nur alle Programme beenden, die auf die Datei zugreifen, dann räumt Windows automatisch aus und ginbt alle Kernelobjekct automatisch wieder frei.

Soweit die Theorie, wie es sein sollte. :twisted: (Nichts für ungut Luckie :wink: )
Ich habs in der Praxis leider schon anders erlebt. Nach einem Neustart des Rechners sollte es auf jeden Fall wieder funktionieren.
drstar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 79
Erhaltene Danke: 2

Windows 8.1/x64
Delphi 10.1
BeitragVerfasst: Do 25.05.06 01:44 
chkdsk Laufwerk: /x in der DOS-Eingabeaufforderung wirkt manchmal einfach wunder, wenn es nicht grad eine Systempartition ist (Laufwerk durch den entsprechenden Bucstaben ersetzen).