AGB  ·  Datenschutz  ·  Impressum  







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

Ordner überwachen

Ein Thema von Skullwing · begonnen am 29. Okt 2011 · letzter Beitrag vom 29. Okt 2011
Antwort Antwort
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#1

AW: Ordner überwachen

  Alt 29. Okt 2011, 18:42
Eine Überwachung in Echtzeit ist das alles nun aber nicht gerade.
Das aber läßt sich mit Hilfe der WinAPI und ggf. in einem eigenen Thread machen, wie z.B. für das Hinzufügen, Löschen oder Rename eines Files nach diesem Grundgerüst:
Code:
 Var NotificationHandle: Cardinal;
      Response: Cardinal;
      FolderToMonitor: String; // das zu überwachende Verzeichnis
      Monitoring: Boolean; // zur Steuerung der Schleife auch aus dem Hauptthread heraus    
     
 function WaitFor(Hdl: Cardinal; Timeout: Cardinal = INFINITE): Cardinal;
 begin
  Result := WaitForSingleObject(Hdl, Timeout);
 end;

 
 NotificationHandle := FindFirstChangeNotification(PChar(FolderToMonitor), FALSE, FILE_NOTIFY_CHANGE_FILE_NAME);
 if (NotificationHandle <> INVALID_HANDLE_VALUE) then exit;
 While monitoring do
  begin
    Response := WaitFor(NotificationHandle, 100); // oder anderen Timeout, aber timeout:=INFINITE ist nicht empfehlenswert
    if (Response = WAIT_OBJECT_0) then
    begin
        // jetzt darauf reagieren ...
        // bzw. eine entspr. Message an den Hauptthread reichen: Synchronize(MitWelcherProzedurAuchImmer);  
        // und dann entweder abbrechen (mit Break aus der Schleife)
        // oder aber fortsetzen mit:
        FindNextChangeNotification(NotificationHandle);
    end;
    Application.ProcessMessages; // dies jedoch nicht in einem eigenen Thread
  end;
  Mit Zitat antworten Zitat
Skullwing

Registriert seit: 29. Okt 2011
12 Beiträge
 
#2

AW: Ordner überwachen

  Alt 29. Okt 2011, 19:21
Ist in der Funktion jetzt enthalten, dass er das Verzeichnis scannt ?

Und bei "Jetzt darauf reagieren", muss ich schreiben, dass das was er aus dem letzten Scann hat, mit einem anderen vergleichen soll, oder?

Geändert von Skullwing (29. Okt 2011 um 19:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.202 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ordner überwachen

  Alt 29. Okt 2011, 19:26
Dort wo dieser Kommentar steht, kannst du "irgendwas" machen, denn dieser Teil wird ja aufgerufen, wenn sich irgendwo, im überwachten Bereich, eine Datei geändert hat.

Genauere Informationen, findet man bei der Beschreibung zur Funktion:
MSDN-Library durchsuchenFindFirstChangeNotification (meistens gleich der erste Link)


Oder in den anderen Threads. (siehe Beitrag #2)

Für die, welche die Suchfunktion nicht kennen:
Hier im Forum suchenOrdner überwachen (auf diese Suchworte kommt man natürlich nie)
Hier im Forum suchenVerzeichnis überwachen (Ähnliches)
Hier im Forum suchenFindFirstChangeNotification (was haben Andere schon dazu geschrieben)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Okt 2011 um 19:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:33 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