Показать полную графическую версию : Delphi, компонент RxFolderMonitor
khvalera
25-07-2004, 00:43
Как с помощью Delphi узнать название появившегося файла в указаной траектории.
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;
Блин, что это еще за фигня RxFolderMonitor1Change. Очередной бестолковый компонент? Такого не знаю, пишите по человечески используя нечто постандартнее, тогда может помогу...
hasherfrog
26-07-2004, 10:50
Kuper Чего кипятимся?
khvalera
В принципе я лично вижу два способа отслеживания создания файлов: регулярное перечитывание каталога и использование хуков. Если У Вас всё достаточно некритично по времени, первый вариант очень даже подойдёт, имхо.
регулярное перечитывание каталога
Можно это вставить в обработчик 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.