AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FileExistsWait

Ein Thema von PeterPanino · begonnen am 17. Jan 2013 · letzter Beitrag vom 17. Jan 2013
 
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#1

FileExistsWait

  Alt 17. Jan 2013, 12:12
Diesmal keine Frage, sondern eine kleine praktische Funktion, die sich beim Umgang mit Dateien als nützlich erwiesen hat. Oft muss man nämlich eine Datei kopieren und die Ziel-Datei dann weiterverarbeiten (z.B. öffnen). Wenn man aber große Dateien kopiert, kann es unter Umständen passieren, dass die Zieldatei noch nicht (oder nicht vollständig) existiert, wenn das Programm nachher versucht, diese zu öffnen. Wenn man nun aber eine statische Wartezeit nach dem Kopieren einbaut, kann es sein, dass ein zu langes Warten den Benutzer nervt oder die Datei trotzdem noch nicht existiert und ein Fehler auftritt. Diese kleine Funktion löst dieses Problem, indem sie intervall-weise wiederholt prüft, ob die Datei bereits existiert:
Delphi-Quellcode:
procedure MyDelay(const Milliseconds: Integer);
var
  Tick: DWord;
  Event: THandle;
  ms: Integer;
begin
  ms := Milliseconds;
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + DWord(ms);
    while (ms > 0) and
          (MsgWaitForMultipleObjects(1, Event, False, ms, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      if Application.Terminated then Exit;
      ms := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;

function FileExistsWait(const AFile: string; const AIntervallMS, ATimeMS: Integer): Boolean;
var
  i: Integer;
begin
  Result := False;

  i := 0;
  while not FileExists(AFile) do
  begin
    MyDelay(AIntervallMS);
    Inc(i, AIntervallMS);
    if i > ATimeMS then
      EXIT;
  end;

  Result := True;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz