AGB  ·  Datenschutz  ·  Impressum  







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

ReadDirectoryChangesW

Ein Thema von Cylence · begonnen am 14. Mär 2008 · letzter Beitrag vom 15. Nov 2015
Antwort Antwort
Ganymed

Registriert seit: 11. Jun 2003
Ort: Hameln
56 Beiträge
 
Delphi 7 Architect
 
#1

Re: ReadDirectoryChangesW

  Alt 26. Mär 2009, 09:03
Hallo!

Ich habe mir deinen Code auch mal "ausgeliehen" , bekomme aber fast immer bei CloseHandle(FhFile); im Destructor eine AV bzw. einen Memory-leak...

Muss man irgendwas bestimmtes machen, bevor man den freigibt?

Mein Code sieht grob so aus:
Delphi-Quellcode:
constructor TAutomatics.Create(AOwner: TControl; ASettings: TAutomaticsSetting; ASequenceIndex: Integer);
begin
  inherited Create;
  FOwner := AOwner;

  iSequenceIndex := ASequenceIndex;
  rSettings := ASettings;
  bEnabled := False;

  oFileQueue := TStringList.Create;
  oFolderControler := TFldrControl.Create(AOwner);
  oFolderControler.Folder := rSettings.sInputFolder;
  oFolderControler.OnGetResult := FolderControlEvent;
end;

destructor TAutomatics.Destroy;
begin
  oFolderControler.StopThread;
  oFolderControler.Free;
  oFileQueue.Free;
  inherited;
end;
Gestartet wird der Thread an anderer Stelle mit StartThread().

Achja, noch eine Frage:
Das Event triggert ja, sobald eine Datei erstellt wird. Wenn man nun eine sehr große Datei kopiert, triggert das Event, sobald der Dateiname da ist, und lange bevor die Datei komplett erstellt/kopiert wurde. Gibt es einen Trick, wie man ermitteln kann, ob die Datei vollständig erstellt wurde? Mit schwebt da was mit einer Schreife auf TFileStream.Create(..., fmShareExclusive) vor, bis der exklusive Zugriff erfolgreich ist...
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#2

AW: ReadDirectoryChangesW

  Alt 18. Mai 2014, 12:34
Ich muss das Thema mal aufleben lassen.

Ich bin dabei mir ein Tool zu schreiben, dass Ordner überwacht und diese bei Änderungen spiegelt. Das klappt soweit auch.
Dabei nutze ich die SHChangeNotify API. Damit kann ich mehrere Ordner gleichzeitig überwachen, jedoch kommt es ab und an vor, dass einige Änderungen nicht wahrgenommen oder weitergeleitet werden.

Jetzt habe ich schon gelesen, dass das normal ist, dass einige Events untergehen und die Methode "ReadDirectoryChangesW" dafür besser geeignet ist.

Die Frage ist jetzt: Kann man denn damit mehrere Verzeichnisse gleichzeitig überwachen?
LAN-PC: C2Q Q9550 @ 4004 MHz @ 1.232 V @ Mugen 2 | DFI LANParty JR P45-T2RS | G.Skill 4GB DDR2-1000 CL5 | ZOTAC GTX 280 @ GTX 285 @ 1.06 V | WD Caviar Blue 320GB / WD Caviar Black 640GB | BeQuiet DPP P7 450W | Antec Mini P180
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#3

AW: ReadDirectoryChangesW

  Alt 18. Mai 2014, 14:19
Dafür gibt es fertige Komponenten:
- HDDWatch
- DirectoryWatch

Für jedes Laufwerk eine Kompo aufs Formular:
Angehängte Grafiken
Dateityp: jpg HDDwatch.jpg (118,4 KB, 109x aufgerufen)

Geändert von hathor (18. Mai 2014 um 14:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#4

AW: ReadDirectoryChangesW

  Alt 18. Mai 2014, 14:34
Aha, und was machen die anders als die oben gepostete?

Sorry, aber deine Antwort bringt mir nix, denn meine Frage war eine Andere.
LAN-PC: C2Q Q9550 @ 4004 MHz @ 1.232 V @ Mugen 2 | DFI LANParty JR P45-T2RS | G.Skill 4GB DDR2-1000 CL5 | ZOTAC GTX 280 @ GTX 285 @ 1.06 V | WD Caviar Blue 320GB / WD Caviar Black 640GB | BeQuiet DPP P7 450W | Antec Mini P180
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE.Y85
MuTzE.Y85

Registriert seit: 11. Apr 2006
152 Beiträge
 
#5

AW: ReadDirectoryChangesW

  Alt 18. Mai 2014, 15:05
Für jedes Laufwerk eine Kompo aufs Formular:
Ja und diesen Teil hätte ich mir vor der Bearbeitung deines Posts gewünscht

Problem ist nur, dass die Anzahl, der zu überwachenden Verzeichnisse ja bei der Entwicklung nicht vor liegt.
Das wird ja dann im Programm selbst festgelegt. Soll ja auch anpassbar sein.

Wie mache ich das dann?
Die Komponente zur Laufzeit erstellen, aber wie halte ich sie dann auseinander?

EDIT: Alles klar, habs hinbekommen mit einem Array.
LAN-PC: C2Q Q9550 @ 4004 MHz @ 1.232 V @ Mugen 2 | DFI LANParty JR P45-T2RS | G.Skill 4GB DDR2-1000 CL5 | ZOTAC GTX 280 @ GTX 285 @ 1.06 V | WD Caviar Blue 320GB / WD Caviar Black 640GB | BeQuiet DPP P7 450W | Antec Mini P180

Geändert von MuTzE.Y85 (19. Mai 2014 um 00:15 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#6

AW: ReadDirectoryChangesW

  Alt 6. Dez 2014, 16:15
Aus aktuellem Anlass (PM) Sourcecode der Komponente im Anhang.
Ist auch für XE7 geeignet.
Angehängte Dateien
Dateityp: zip HDDWatch.zip (10,7 KB, 153x aufgerufen)
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#7

AW: ReadDirectoryChangesW

  Alt 15. Nov 2015, 13:19
Kann man sich damit auch laufende Kopiervorgänge anzeigen lassen, oder eine Live-Größenüberwachung? Gerade bei größeren Ordnern mit 4> Gig Files wird kein onChange zwischendurch geschmissen. Der Ordner existiert dann zwar schon, aber halt leer.
Da ich aber was tun möchte wenn sich an den Ordnern nichts mehr ändert (z.B. kopieren beendet oder eine rar fertig entpackt) wäre das hilfreich.

Gruß
SM
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#8

AW: ReadDirectoryChangesW

  Alt 18. Mai 2014, 14:52
Die Frage ist jetzt: Kann man denn damit mehrere Verzeichnisse gleichzeitig überwachen?
Das IST Deine Frage!
  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 10:32 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