AGB  ·  Datenschutz  ·  Impressum  







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

TDirMonitor / ReadDirectoryChanges

Ein Thema von doctor-x · begonnen am 5. Jan 2012 · letzter Beitrag vom 23. Mai 2017
Antwort Antwort
doctor-x

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

TDirMonitor / ReadDirectoryChanges

  Alt 5. Jan 2012, 23: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, 185x aufgerufen)
Wolf
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: TDirMonitor / ReadDirectoryChanges

  Alt 6. Jan 2012, 07:35
Das liegt an der unterschiedlichen Definition von 'Char' in den Delphi-Versionen. Früher war das ein Byte, heute sind das zwei.
Du müsstest entweder komplett auf WideChar umschwenken und die entsprechenden Windows-API Funktionen nutzen, oder komplett auf AnsiChar.
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TDirMonitor / ReadDirectoryChanges

  Alt 6. Jan 2012, 11:16
<NaiveFrage>
Ginge das auch mit sizeof(Char) und allem, das dazugehört?
</NaiveFrage>
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
doctor-x

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

AW: TDirMonitor / ReadDirectoryChanges

  Alt 6. Jan 2012, 19:16
Das es an der Umstellung des Types PChar liegt habe ich mir fast gedacht.

Ich meine aber es mit PAnsiChar probiert zu haben (ohne Erfolg), kann mich aber auch irren.

Ich wollte diesen Erfolg hier nur veröffentlichen, da ich kein funktionierendes Beispiel hier finden konnte und anderen die mühevolle Sucherei und Probiererei sparen wollte, die sich mit diesem Thema in naher Zukunft konfrontiert sehen^^

Es gibt bestimmt noch ein Dutzend andere Lösungen, aber solange es funktioniert, braucht man ja nicht das Rad neu zu erfinden.

MfG
Wolf
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: TDirMonitor / ReadDirectoryChanges

  Alt 6. Jan 2012, 20:33
Die Komponente ruft eine Windows-API-Funktion auf.
Und bei einem Unicode-Delphi wird auch automatisch die Unicode-Version der API aufgerufen.
Darum funktioniert das auch mit AnsiChar nicht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: TDirMonitor / ReadDirectoryChanges

  Alt 6. Jan 2012, 20:44
Nimmt man dann die API-Funktionen, die auf xxxxxA enden?
  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 05:00 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 by Thomas Breitkreuz