Hallo,
ich hab schon wiedermal eine Frage.
Zur Erläuterung:
Mein Progrämmchen überwacht mehrere Verzeichnisse auf das Hinzukommen von neuen Dateien.
Die zu überwachenden Verzeichnisse stehen in einer ini-Datei.
Das Überwachen mache ich mit der Komponente DirMonitor (hatte ich auch hier irgendwo gefunden und geht prima).
Für jedes Verzeichnis in der ini-Datei erzeuge ich zur Laufzeit eine entsprechende DirMonitor-Komponente, weise dieser einen Namen, die FilterAction, das jeweilige Verzeichnis und ein DirMonChange-Ereignis zu und setzte sie aktiv:
Delphi-Quellcode:
...
for i := 0 to stl_Verzeichnisse.count - 1 do
begin
DirMon[i] := TDirMonitor.Create(Self);
with DirMon[i] do
begin
Inc(merke_Anzahl_DirMon);
Name := 'DirMon_' + sName;
Directory := sVerz;
FilterAction := FilterAction + [faADDED];
FilterAction := FilterAction - [faREMOVED];
FilterAction := FilterAction - [faMODIFIED];
FilterAction := FilterAction - [faRENAMED_OLD_NAME];
FilterAction := FilterAction - [faRENAMED_NEW_NAME];
OnChange := DirMonChange;
Active := true;
end;
end;
...
Im DirMonChange-Ereignis möchte ich dann die jeweiligen Dateien nach und nach verarbeiten.
Delphi-Quellcode:
procedure TForm_Connector.DirMonChange(sender: TObject; Action: TAction; FileName: string);
var saktVerz:string;
begin
ShowMessage(FileName); // z.B. Test.tif
saktVerz:= ???
...
end;
Der aktuelle Dateiname steht mir ja im DirMonChange-Ereignis in FileName zur Verfügung.
Nun nützt mir aber nur der Dateiname allein nichts, ich brauche noch das Verzeichnis.
Das kommt aber bei FileName nicht mit.
Wie kann ich denn in dem DirMonChange-Ereignis auf die Eigenschaft Directory der gerade angesprungenen DirMonitor-Komponete zugreifen? (und bei Bedarf auch auf die anderen Eigenschaften?)
Wenn ich z.B. die Komponente DirMonitor schon von Anfang an mit auf das Formular platziere,
kann ich ja mit
Delphi-Quellcode:
saktVerz:=DirMonitor1.Directory;
direkt darauf Directory zugreifen.
Aber das will ich ja nicht.
Ich will ja erst zur Laufzeit für jedes Verzeichnis eine Komponete erzeugen.
Kann mir da bitte wieder jemand helfen?
Danke im Vorraus
Bea