![]() |
auf Änderungen im Ordner reagieren
Wie kann ich, wenn eine Datei in einem Ordner erstellt, geändert bzw. gelöscht wird im Delphi darauf reagieren, dass sozusagen ein Ereignis ausgelöst wird.
danke schonmal.. |
Re: auf Änderungen im Ordner reagieren
|
Re: auf Änderungen im Ordner reagieren
ja danke, da sind jede menge komponenten dazu.
kann mir vielleicht jemand noch erklären, wie ich allgemein an dieses problem rangeh? |
Re: auf Änderungen im Ordner reagieren
Stichwort für das MSD:
![]() |
Re: auf Änderungen im Ordner reagieren
Bei mir gibt's bei Delphi die Komponente TShellChangeNotifier im Reiter Beispiele/Samples bei Delphi 6 und 7.
Wenn dich die API's interessieren, die dafür genutzt werden, dann schau dir einfach den Quelltext dazu von Borland an :P Übrigens bei Delphi 8 (also .NET) ist es der FileSystemWatcher ;-) |
Re: auf Änderungen im Ordner reagieren
danke luckie... das wollte ich wissen!!! und auch thx an alexander, werd mir die borland quellcodes auch mal reinziehen :-D
|
Re: auf Änderungen im Ordner reagieren
Moin Mumu,
für NT basierte Systeme kommt auch noch ReadDirectoryChangesW in Frage. |
Re: auf Änderungen im Ordner reagieren
Zitat:
ich habe dashier in einem Buch dazu gefunden. Nur wie rufe ich das ganze jetzt auf?
Delphi-Quellcode:
Vielen Dank!
unit DirChangeThread;
interface Uses Classes, Windows, Dialogs; Type TDirChange = Class(TThread) Private { Private-Deklarationen } Handle : THandle; Path : String; Protected Procedure Execute; Override; Procedure RefreshListBox; Destructor Destroy; Public { Public-Deklarationen } Constructor Create(Path : String); End; implementation Uses Unit1; Constructor TDirChange.Create(Path : String); Begin Inherited Create(False); Path := Path; FreeOnTerminate := True; End; Procedure TDirChange.Execute; Begin Handle := FindFirstChangeNotification(PChar(Path), FALSE, FILE_NOTIFY_CHANGE_NAME); If Handle <> INVALID_HANDLE_VALUE Then While True Begin If WaitForSingleObject(Handle, 500) = WAIT_OBJET_0 Then Begin Synchronize(RefreshListBox); End; FindNextChangeNotification(Handle); If Terminated Then Break; End; End; Procedure TDirChange.RefreshListBox; Begin Form1.FileListBox1.Update; End; Destructor TDirChange.Destroy; Begin If Handle <> NULL Then FindCloseChangeNotification(Handle); Inherited Destroy; End; end. |
Re: auf Änderungen im Ordner reagieren
Das ist doch ein ganz normales VCL-Thread-Objekt. Einfach wie jedes andere Objekt erzeugen. Weitere Infos hier:
![]() |
Re: auf Änderungen im Ordner reagieren
Hi,
leider hab ich noch nie mit Threads gearbeitet. Also ich habe im Buch den Aufruf so da stehen:
Delphi-Quellcode:
Jetzt weis ich aber nicht was Kontrolle sein soll.
If Kontrolle <> Nil Then
Kontrolle.Terminate; Kontrolle := TDirChange.Create(DirectoryListBox1.Directory); 2. ist wohl in dem Thread n Fehler drin. Denn der Compiler meckert hier rum:
Delphi-Quellcode:
Hinter NULL: Undefinierter Bezeichner NULL!
Destructor TDirChange.Destroy;
Begin If Handle <> NULL Then FindCloseChangeNotification(Handle); Inherited Destroy; End; Was muss da geändert werden? Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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