Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi auf Änderungen im Ordner reagieren (https://www.delphipraxis.net/21048-auf-aenderungen-im-ordner-reagieren.html)

mumu 27. Apr 2004 10:08


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..

shmia 27. Apr 2004 10:12

Re: auf Änderungen im Ordner reagieren
 
torry.net->Files & Drives->Notification

mumu 27. Apr 2004 11:22

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?

Luckie 27. Apr 2004 12:45

Re: auf Änderungen im Ordner reagieren
 
Stichwort für das MSD: MSDN-Library durchsuchenFindFirstChangeNotification.

Alexander 27. Apr 2004 12:48

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 ;-)

mumu 27. Apr 2004 13:18

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

Christian Seehase 27. Apr 2004 21:30

Re: auf Änderungen im Ordner reagieren
 
Moin Mumu,

für NT basierte Systeme kommt auch noch ReadDirectoryChangesW in Frage.

Mackhack 30. Apr 2004 02:07

Re: auf Änderungen im Ordner reagieren
 
Zitat:

Zitat von Luckie
Stichwort für das MSD: MSDN-Library durchsuchenFindFirstChangeNotification.

Hi,

ich habe dashier in einem Buch dazu gefunden. Nur wie rufe ich das ganze jetzt auf?

Delphi-Quellcode:
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.
Vielen Dank!

Luckie 30. Apr 2004 02:21

Re: auf Änderungen im Ordner reagieren
 
Das ist doch ein ganz normales VCL-Thread-Objekt. Einfach wie jedes andere Objekt erzeugen. Weitere Infos hier: http://Tutorials.luckie-online.de

Mackhack 30. Apr 2004 02:38

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:
  If Kontrolle <> Nil Then
    Kontrolle.Terminate;
  Kontrolle := TDirChange.Create(DirectoryListBox1.Directory);
Jetzt weis ich aber nicht was Kontrolle sein soll.

2. ist wohl in dem Thread n Fehler drin. Denn der Compiler meckert hier rum:

Delphi-Quellcode:
Destructor TDirChange.Destroy;
Begin
  If Handle <> NULL Then
    FindCloseChangeNotification(Handle);
  Inherited Destroy;
End;
Hinter NULL: Undefinierter Bezeichner NULL!

Was muss da geändert werden?

Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr.
Seite 1 von 3  1 23      

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