Einzelnen Beitrag anzeigen

doctor-x

Registriert seit: 29. Apr 2007
41 Beiträge
 
#1

TDirMonitor / ReadDirectoryChanges

  Alt 5. Jan 2012, 22:50
Hallo,

nach dem ich mich durch etliche Beiträge gewühlt habe und viele Varianten ausprobiert habe und keine fehlerfrei funktionierte habe ich jetzt endlich mal eine die seit Monaten fehlerfrei arbeitet.

Ich nutze TDirMonitor von JUAN CARLOS MOLINOS MESA. Diese arbeitete aber nicht fehlerfrei, ich hatte bei etlichen versuchen sporadische thred Fehler, Sonderzeichen und abgeschnittene Pfad angaben oder auch einen totalen Hänger des Programms.

Mit folgenden Änderungen hat es dann letztendlich doch noch zum Erfolg geführt:

Original:
Code:
Offset: Longint;
Ersetzt durch:
Code:
Offset: DWORD;
Original:
Code:
name:=WideCharToString(@(FileOpNotification^.FileName));
Ersetzt durch:
Code:
name:=WideCharLenToString(@(FileOpNotification^.FileName), FileOpNotification^.FileNameLength div 2);
Original:
Code:
PChar(FileOpNotification) := PChar(FileOpNotification) + Offset;
Ersetzt durch:
Code:
PByte(FileOpNotification) := PByte(FileOpNotification) + Offset;
Einbinden in den Units "RDCWDirMonitor" und "ProcessMonitor" der Units "ShlObj", "ActiveX" und "FileCtrl"

Dies hat nun zum Erfolg geführt.
Das einbinden der Units und die Type änderung des Offsets und eventuell auch andere Änderungen sind vermutlich nicht nötig, aber ich war das weitere rumprobieren satt. So funktioniert es in jedem Fall bei mir auf zwei Rechnern mit Englischem Win2000 und auf zwei Rechnern mit Englischem WinXP seit Monaten fehlerfrei. (Compiliert in Delphi XE unter Win7 Pro X64)

Ich hoffe ich kann damit den anderen die diese Probleme habe / kennen, den weg zum Erfolg etwas verkürzen.
Anbei noch die so geänderte Komponente. (Die Demo entspricht nicht 100% der original Version)

MfG
Angehängte Dateien
Dateityp: zip DirMonitor.zip (32,3 KB, 178x aufgerufen)
Wolf
  Mit Zitat antworten Zitat