Einzelnen Beitrag anzeigen

Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#2

Re: Noch offene Dateileichen schliessen oder löschen?

  Alt 11. Okt 2007, 05:17
Ich würde das Problem an der Wuzel packen: Nachsehen ob, die Datei noch offen ist und warten bis der Urheber seine Daten Zuende geschrieben hat, Stichwort FileInUse und ein Delayanfügen, wenn dem so ist. Und klappt es immer noch nicht, dann gibt es auch Threads hier, die mit "gesperrte Datei löschen" Dir weiterhelfen. Die Suchfunktion von der Delphipraxis beantwortet mittlerweile 70% aller Fragen. Diese sollte vor der Fragestellung Deine erste Wahl sein.

Sofort gefunden (von User Toms):
Delphi-Quellcode:
function FileInUse(FileName: string): Boolean;
var
  hFileRes: HFILE;
begin
  Result := False;
  if not FileExists(FileName) then
    Exit;
  hFileRes := CreateFile(PChar(FileName),
    GENERIC_READ or GENERIC_WRITE,
    0,
    nil,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    0);
  Result := (hFileRes = INVALID_HANDLE_VALUE);
  if not Result then
    CloseHandle(hFileRes);
end;
Von User Hagen:
Delphi-Quellcode:
procedure Delay(Milliseconds: Integer);
var
  Tick: DWord;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + DWord(Milliseconds);
    while (Milliseconds > 0) and
          (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      if Application.Terminated then Exit;
      Milliseconds := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;
  Mit Zitat antworten Zitat