Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi CloseFile(F) schließt Datei nicht (https://www.delphipraxis.net/17726-closefile-f-schliesst-datei-nicht.html)

Luckie 9. Mär 2004 00:47


CloseFile(F) schließt Datei nicht
 
Neuer Versuch:
Delphi-Quellcode:
function RewriteBookmarkFile(sl: TStrings; Filename: string): Cardinal;
var
  Loop: Integer;
  Count: Cardinal;
  inF, outF: TextFile;
  s: String;
begin
  Count := 0;
{$I-}
  AssignFile(inF, Filename);
  Reset(inF);
  AssignFile(outF, Filename+'.html');
  Rewrite(outF);
  for Loop := 0 to sl.Count - 1 do
  begin
    while not EOF(inF) do
    begin
      Readln(inF, s);
      if pos(sl.Strings[Loop], s) = 0 then
        WriteLn(outF, s)
      else
        Inc(Count);
    end;
  end;
  CloseFile(inF);
  CloseFile(outF);
  DeleteFile(Filename);
  RaiseLastOSError();
{$I+}
  result := Count;
end;
RaiseLastError(); sagt mir:
Zitat:

---------------------------
Bookmark-Checker
---------------------------
Systemfehler. Code: 32.

Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.
---------------------------
OK
---------------------------
Was darauf zurückzuführen ist, dass CloseFile(inF) die datei nicht richtig schließt. Also was tun?

Da vergeht einem die Lust am Programmieren. :evil:

stoxx 9. Mär 2004 00:51

Re: CloseFile(F) schließt Datei nicht
 
für solche Fälle gibts bei mir die Funktion DeleteFileTimeOut.
Ich hab schon genügend Ärger damit gehabt ! (Eventuell kannst Dir die TimeOut Zeit noch als Parameter übergeben)

Code:
function DeleteFileTimeOut(Filename : string) : boolean;
var TimeOut : DWORD;
 begin
 result := false;
 Timeout := gettickcount + (7000);    // 7 Sekunden

 while FileExists(FileName) and not DeleteFile( FileName ) and (gettickcount < TimeOut) do sleepx(50);
 if gettickcount < Timeout then result := true;
end; // von DeleteFileTimeout
achja .. das fehlt auch noch.

Code:
procedure SleepX(SleepTicks: DWORD);
var
  TC: DWORD;
begin
  TC := GetTickCount;
  repeat
    if application.Terminated then exit;
    Application.ProcessMessages;
    sleep(1);
  until ((GetTickCount-TC) > SleepTicks) or application.Terminated;
end;

Luckie 9. Mär 2004 00:59

Re: CloseFile(F) schließt Datei nicht
 
Hilft leider auch nichts.

stoxx 9. Mär 2004 01:01

Re: CloseFile(F) schließt Datei nicht
 
Zitat:

Zitat von Luckie
Hilft leider auch nichts.

hmm .. na liefert DeleteFile nicht false zurück beim aufrufen bei Dir ?

Luckie 9. Mär 2004 02:53

Re: CloseFile(F) schließt Datei nicht
 
Vergesst es. Ich habe die Datei an einer anderen Stelle nicht geschlossen. :wall: Das hat mich jetzt dreieinhalb Stunden gekostet. :evil:

Vjay 9. Mär 2004 07:29

Re: CloseFile(F) schließt Datei nicht
 
Hehe, man muss nur wissen wo man suchen muss, kenne solche Dinge ;)

Aber zu dem Fileproblem: Hatte auch schonmal so etwas - da war es dann aber der NoName-Virenscanner des Systems, der die Files blockierte. Habe mich damals auch totgesucht gehabt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr.

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