Отслеживание изменений в каталоге
 Добавлено: 23.12.2018 01:32:04
Добавлено: 23.12.2018 01:32:04Здравствуйте!
Наткнулся на кроссплатформенные наработки по отслеживанию изменений в каталоге https://github.com/Wosi/DirectoryWatcher
Демка консольная работает, отслеживает каталог и подкаталоги. Как заставить работать в обычном приложении?
Пробовал так, но вызывается исключение 'External: SIGSEGV'.
			Наткнулся на кроссплатформенные наработки по отслеживанию изменений в каталоге https://github.com/Wosi/DirectoryWatcher
Демка консольная работает, отслеживает каталог и подкаталоги. Как заставить работать в обычном приложении?
Пробовал так, но вызывается исключение 'External: SIGSEGV'.
- Код: Выделить всё
- unit main;
 {$mode objfpc}{$H+}
 interface
 uses
 Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
 DirectoryWatcherBuilder, DirectoryWatcherAPI;
 type
 { TForm1 }
 TForm1 = class(TForm)
 Button1: TButton;
 Button2: TButton;
 Button3: TButton;
 Memo1: TMemo;
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 procedure Button3Click(Sender: TObject);
 private
 procedure OnFileEvent(const FilePath: String; const EventType: TDirectoryEventType);
 public
 end;
 var
 Form1: TForm1;
 DirWatcher: IDirectoryWatcher;
 FolderToWatch: String;
 implementation
 {$R *.lfm}
 { TForm1 }
 procedure TForm1.OnFileEvent(const FilePath: String; const EventType: TDirectoryEventType);
 var
 EventTypeString: String;
 begin
 Memo1.Lines.Add('======NEW EVENT======');
 Memo1.Lines.Add('File: ' + FilePath);
 case EventType of
 detAdded: EventTypeString := 'ADDED';
 detRemoved: EventTypeString := 'REMOVED';
 detModified: EventTypeString := 'MODIFIED';
 end;
 Memo1.Lines.Add('Type: ' + EventTypeString);
 end;
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 FolderToWatch := ExtractFileDir(ParamStr(0));
 DirWatcher := TDirectoryWatcherBuilder.New.WatchDirectory(FolderToWatch).Recursively(True).Build;
 DirWatcher.Start;
 end;
 procedure TForm1.Button2Click(Sender: TObject);
 begin
 DirWatcher := nil;
 end;
 procedure TForm1.Button3Click(Sender: TObject);
 begin
 Memo1.Lines.SaveToFile(ExtractFileDir(ParamStr(0)) + '\fl.txt');
 end;
 end.