Войти

Показать полную графическую версию : Delphi, компонент RxFolderMonitor


khvalera
25-07-2004, 00:43
Как с помощью Delphi узнать название появившегося файла в указаной траектории.

JCooper
25-07-2004, 13:25
khvalera
Нифига не понял :)

khvalera
25-07-2004, 22:29
Попробывал сделать так с помощью RxFolderMonitor1Change
проверку появления файла в коталоге, а с помощью FindFirst
узнаю название файла, вроде бы все ОК! но выводит в StatusBar
только ".". В чем дело? Что я не так делаю?
procedure TForm1.RxFolderMonitor1Change(Sender: TObject);
begin
FindFirst(path2+'*',faAnyFile,Names);
StatusBar1.SimpleText:= (Names.Name);
RenameFile(path2+'\*.*',path2+'\v'+Data+'.zzz');
end;

JCooper
25-07-2004, 23:18
Блин, что это еще за фигня  RxFolderMonitor1Change. Очередной бестолковый компонент? Такого не знаю, пишите по человечески используя нечто постандартнее, тогда может помогу...

hasherfrog
26-07-2004, 10:50
Kuper Чего кипятимся?
khvalera
В принципе я лично вижу два способа отслеживания создания файлов: регулярное перечитывание каталога и использование хуков. Если У Вас всё достаточно некритично по времени, первый вариант очень даже подойдёт, имхо.

JCooper
26-07-2004, 13:28
регулярное перечитывание каталога
Можно это вставить в обработчик Applicattion.OnIdle или же
создать поток и засобачить туда.
hasherfrog виноват, сорвался :shuffle:

khvalera
26-07-2004, 22:15
Отслеживание происходит с помощью компонента RxFolderMonitor1Change из библиотеки RX, это все работает, а вот по чему вместо названия файла в StatusBar выводится точка, я так и не выкупил.

FindFirst(path2+'*',faAnyFile,Names);
StatusBar1.SimpleText:= (Names.Name);

Что тут не так?

hasherfrog
27-07-2004, 09:09
khvalera
Ну подумаем. Что меняется при создании нового файла? Правильно, "описание" директории тоже подновляется. Вы просто никогда на это в виндах не обращали внимания. А текущий каталог - это и есть "." (эээ, сылка на неё). Т.о. Ваш компонент всё правильно отслеживает, Folder как раз и изменяется (ну и файл, конечно, тоже). Может, попробуете RxFileMonitor1Change :)? А на самом деле проблему легко разрулить - пропускаёте точку, если встретите в FindFirst.

khvalera
27-07-2004, 13:02
Благодарю за помощь! Подскажите как пропустить точку, в FindFirst.  :)

hasherfrog
27-07-2004, 13:38
khvalera
:spy: Если FindFirst возвращает в Names.Name строку ".", делаем FindNext (или FindSecond, или FindAgain, не в курсе, чего там у Вас).

khvalera
28-07-2004, 11:13
Спасибо !!!
Первый FindNext  показывает „..”, следующий название подкаталога, а следующий уже файл. Проще ничего нет?

hasherfrog
28-07-2004, 12:12
следующий название подкаталога
Какого ещё подкаталога? Это уже похоже на работу самого обычного FindFirst/FindNext для какого-нибудь CFile или Win32API.

khvalera
02-08-2004, 16:35
Кто работал с RxFolderMonitor?  Какого в 98й он выдает ошибку при вводе пути и активизации в Win2000 работает нормально?
Project * raised exception class EWin32Error with message Win32 Error. Code 87.

hasherfrog
02-08-2004, 16:55
AL> Почему при попытке активировать rxFolderMonitor вылетает ошибка "Win32
AL> Error. Code 87. Параметр задан неверно"?
В свойстве Filter для W9x должно быть FALSE для fnLastAccess, fnCreation,
fnSecurity.

khvalera
04-08-2004, 22:58
Тогда каким образом можно отследить появление файлов в указанной траектории? Компонент используется только для этой цели.

hasherfrog
05-08-2004, 12:26
Я подозреваю, что в имплементейшене RxFolderMonitor используется API-функция FindFirstFileEx вместо FindFirstFile, если Вы требуете какие-то дополнительные аттрибуты файлов в поиске. А FindFirstFileEx не реализована в 95,98,me.
Вообще, я лично страшно не люблю использовать библиотеки с закрытым кодом, а в Delphi это сплошь и рядом.

khvalera
05-08-2004, 19:48
Та, что вы можете посоветовать? Может есть другие подобные компоненты?

hasherfrog
05-08-2004, 20:01
Я уже преглагал - напишите свой. Я бы так и сделал. Извините, но в компонентах дельфи я как балерина в паровозах http://smiles.ru/coll/smile/naturalist.gif




© OSzone.net 2001-2012