Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];

Вниз

FileWatcher+Sort   Найти похожие ветки 

 
VirEx ©   (2008-06-07 20:02) [0]

Подскажите, может кто знает хороший сортировщик, следящий за папкой и при появлении файла, копирующий его по сигнатуре или хотябы по маске расширения и имени в нужные папки (и если надо, распаковывающий архивы, содержимое которых будет также раскидывать по папкам). Возможно выполненный в виде сервиса и юзерской формы настроек "сценария сортировки".

На пальцах:
1. в каталоге А появляется файлы DOC1.txt, DOC1xxx.txt, trace.log, DOC1.rar (внутри DOC2.txt, file.log, DOC2xxx.txt), и DOC5zzz.rar (1.xyz, 2.xyz)
2. все файлы с маской DOC?.txt в каталог Б, т.е. DOC1.txt DOC2.txt (распаковывается из архива)
3. все файлы с маской DOC?xxx.txt в каталог В: DOC1xxx.txt и DOC2xxx.txt (из архива)
4. все файлы *.log в папку Г: trace.log и file.log (из архива), при этом они из папки А удаляются
5. все файлы DOC????.rar в папку Д
6. каталог А будет "объектом" слежения программы сегодня, а завтра программа будет следить за папкой A2


 
Тын-Дын ©   (2008-06-07 20:06) [1]


> VirEx ©   (07.06.08 20:02)


Так напиши. Али не программер?
Программа-то узкоспециализированная получается.
Ещё зависит от того, что за программа выкладывает эти файлы в каталог(каким методом идет запись).


 
Игорь Шевченко ©   (2008-06-07 20:08) [2]

ReadDirectoryChangesW тебе в помощь


 
Тын-Дын ©   (2008-06-07 20:09) [3]

ReadDirectoryChangesW+
Проверка на окончание записи файла

FindFirst/Next/Close/ChangeNotification


 
VirEx ©   (2008-06-07 20:09) [4]


>  [2] Игорь Шевченко ©   (07.06.08 20:08)

Сделал я свой FileWatcher давно уже.
Но ежели уже есть готовый продукт-велосипед, чего его изобретать?
Я знаю что не программер и хреново сделаю, опять, поэтому и спрашиваю


 
Игорь Шевченко ©   (2008-06-07 20:11) [5]


> Проверка на окончание записи файла


const
 maxcnt = 360; //Ждем 6 минут максимум
var
 fd: Integer;
 ofs: _OFSTRUCT;
 err: DWORD;
 cnt: Integer;
begin
 cnt := 0;
 repeat
   Inc(cnt);
   FillChar(ofs, SizeOf(ofs), 0);
   ofs.cBytes := SizeOf(ofs);
   fd := OpenFile(PChar(FileName), ofs, OF_SHARE_EXCLUSIVE);
   err := GetLastError;
   if err <> ERROR_SHARING_VIOLATION then
     Break;
   Sleep(1000);
 until cnt >= maxcnt;
 CloseHandle(fd);
 if err <> ERROR_SUCCESS then
   raise Exception.Create(SysErrorMessage(err))


 
anton773   (2008-06-07 20:11) [6]

TFileWatcher? в примерах с делфи 2005 есть все, что тебе нужно


 
Игорь Шевченко ©   (2008-06-07 20:11) [7]

VirEx ©   (07.06.08 20:09) [4]


> Но ежели уже есть готовый продукт-велосипед, чего его изобретать?


Есть. Например мой. Успешно используется в течение 3 лет


 
Тын-Дын ©   (2008-06-07 20:13) [8]


> Игорь Шевченко ©   (07.06.08 20:11) [5]
>
> > Проверка на окончание записи файла


Это подходит, но только знать надо, как запись в файл идёт.
Некоторые программы записывают порциями (прикладные, не системные), открывая и закрывая файл между записью порций.


 
VirEx ©   (2008-06-07 20:15) [9]


> [6] anton773   (07.06.08 20:11)
> TFileWatcher? в примерах с делфи 2005 есть все, что тебе
> нужно

у меня дельфя 7я, сам искал примеры, и см. [4]


> [7] Игорь Шевченко ©   (07.06.08 20:11)
> Есть. Например мой. Успешно используется в течение 3 лет

в студию


 
Игорь Шевченко ©   (2008-06-07 20:16) [10]

Тын-Дын ©   (07.06.08 20:13) [8]

Если файл закрыт, то он свободен для использования. Я так полагаю.
А как действовать в случае, если программа периодически дописывает в файл, открывая его, дописывая и закрывая - если у тебя есть алгоритм, делись, буду признателен.


 
anton773   (2008-06-07 20:17) [11]


> Игорь Шевченко ©   (07.06.08 20:11) [5]
> >
> > > Проверка на окончание записи файла
>
>
> Это подходит, но только знать надо, как запись в файл идёт.
>
> Некоторые программы записывают порциями (прикладные, не
> системные), открывая и закрывая файл между записью порций.
>

TFileWatcher то чем не угодил? Ведь уже готовый компонент? Имеет все что нужно.


 
Игорь Шевченко ©   (2008-06-07 20:17) [12]

VirEx ©   (07.06.08 20:15) [9]


> в студию


Часть коммерческого продукта, по отдельности не продается.
А чтобы купить продукт целиком, тебе сначала надо создать авиакомпанию.


 
VirEx ©   (2008-06-07 20:18) [13]


>  [12] Игорь Шевченко ©   (07.06.08 20:17)

как говорится, не себе не людям


 
Игорь Шевченко ©   (2008-06-07 20:20) [14]

VirEx ©   (07.06.08 20:18) [13]

Примерно так. Направление я тебе дал - ищи.
Ищущий да обрящет, прыгающий да допрыгается.


 
Тын-Дын ©   (2008-06-07 20:20) [15]


> Игорь Шевченко ©   (07.06.08 20:16) [10]
> Тын-Дын ©   (07.06.08 20:13) [8]
>
> Если файл закрыт, то он свободен для использования. Я так
> полагаю.
> А как действовать в случае, если программа периодически
> дописывает в файл, открывая его, дописывая и закрывая -
> если у тебя есть алгоритм, делись, буду признателен.


Я давно тоже писал подобную программу для промышленной эксплуатации...
Но у меня файлы в каталог попадали тоже из моего приложения.
Как быть в случае записи по частям - не знаю.
Мне кажется, что надо оценить практически, сколько требуется времени на запись файла целиком в промышленных условиях и таймауты использовать с максимальным значением.
но это подойдет только если заранее известно, что фалы однотипные, рмаксимальный размер и т.п.
Слишком допущения большие...


 
VirEx ©   (2008-06-07 20:21) [16]


>  [14] Игорь Шевченко ©   (07.06.08 20:20)

тогда зачем заикался о своей программе, коли не даешь.
по сабжу спрашивается программа, не обязательно с исходниками


 
Игорь Шевченко ©   (2008-06-07 20:22) [17]

VirEx ©   (07.06.08 20:21) [16]

А ты халявы хотел ? А халявы нетути.


> по сабжу спрашивается программа, не обязательно с исходниками


ну я тебе сказал - создавай авиакомпанию, покупай наш продукт.


 
Тын-Дын ©   (2008-06-07 20:23) [18]


> VirEx ©


Если найду старые разработки - очищу от лишнего и могу дать.


 
Игорь Шевченко ©   (2008-06-07 20:24) [19]

Тын-Дын ©   (07.06.08 20:20) [15]


> Но у меня файлы в каталог попадали тоже из моего приложения.


Свой со своим всегда договорится. Например, записав файл с заранее оговоренным расширением в заранее оговоренный каталог по полном окончании всей записи в обрабатываемый файл.


 
Тын-Дын ©   (2008-06-07 20:26) [20]


> Свой со своим всегда договорится. Например, записав файл
> с заранее оговоренным расширением в заранее оговоренный
> каталог по полном окончании всей записи в обрабатываемый
> файл.


Это да. К тому же, когда файл захватывается для записи, то как раз код из [5] будет достаточен.


 
VirEx ©   (2008-06-07 20:47) [21]


>  [17] Игорь Шевченко ©   (07.06.08 20:22)
> VirEx ©   (07.06.08 20:21) [16]
>
> А ты халявы хотел ? А халявы нетути.

халява есть всегда, как и жлобства - хоть отбавляй


 
VirEx ©   (2008-06-07 20:48) [22]


> [18] Тын-Дын ©   (07.06.08 20:23)
>
> > VirEx ©
>
>
> Если найду старые разработки - очищу от лишнего и могу дать.

был бы всенепременно рад


 
Игорь Шевченко ©   (2008-06-07 21:13) [23]

VirEx ©   (07.06.08 20:47) [21]

Ну ты же не хочешь писать и искать сам готовое. А моя работа стоит денег, как и любой продукт. Так что про жлобство лучше помалкивай.


 
Германн ©   (2008-06-08 01:08) [24]


> Часть коммерческого продукта, по отдельности не продается.
>
> А чтобы купить продукт целиком, тебе сначала надо создать
> авиакомпанию.
>

Ходят слухи, что при оснастке 5-го терминала аэропорта Хитроу, авиакомпания British Airways установила в нём новое ПО. Фамилии разработчиков ПО, название фирмы-разработчика ПО и страна разработчика хранятся в секрете.
:)


 
VirEx ©   (2008-06-08 08:23) [25]

Всё еще жду помощи :(


 
boa_kaa ©   (2008-06-08 09:25) [26]


> VirEx ©   (08.06.08 08:23) [25]
> Всё еще жду помощи :(

Переходи на .NET, не нужны будут сторонние компоненты


 
tesseract ©   (2008-06-08 10:13) [27]


> Переходи на .NET, не нужны будут сторонние компоненты


devexpress по любому надо ставить :-)


 
Тын-Дын ©   (2008-06-08 15:36) [28]


> VirEx ©


Давай немного подробнее о задаче?

1. Критично ли время реакции обработчика на появление файла в каталоге?
2. Будут ли мониториться на появление файлов сетевые диски?


 
VirEx ©   (2008-06-08 17:49) [29]

1. некритично.
2. да, и мониторная папка также может задаваться так: \\comp\d\

к тому же файлы допустим будет сохранять в мониторную папку TheBat! или команда copy


 
Тын-Дын ©   (2008-06-08 17:58) [30]

3. Размер файлов какой может быть?


 
VirEx ©   (2008-06-08 17:59) [31]

впринципе максимум 50 Мб


 
icelex ©   (2008-06-08 18:45) [32]


> tesseract ©   (08.06.08 10:13) [27]
> > Переходи на .NET, не нужны будут сторонние компоненты
> devexpress по любому надо ставить :-)

если честно, то даже не пользовался никогда
Просто для топикстартера FileSystemWatcher"а хватит


 
Тын-Дын ©   (2008-06-08 20:10) [33]


> VirEx ©   (08.06.08 17:59) [31]
> впринципе максимум 50 Мб


Простейший шаблон уже есть. Могу кинуть. Вариант рабочий, но пытливому уму всегда есть что доделывать.


 
VirEx ©   (2008-06-08 21:20) [34]

_ virex _ собака мэйл ру (без пробелов)


 
Тын-Дын ©   (2008-06-08 21:25) [35]

Подчёркивания нужны?


 
VirEx ©   (2008-06-08 21:27) [36]

если указываю, значит нужны


 
Тын-Дын ©   (2008-06-08 21:28) [37]


> VirEx ©   (08.06.08 21:20) [34]


Всю обработку делай в процедуре  OnFile
В примере в ней просто записывается в журнал перемещённый во временный каталог файл.
procedure OnFile(FilePath: String);
begin
 DirMon.AddLog(FilePath);
end;


 
Тын-Дын ©   (2008-06-08 21:33) [38]

Кстати, Верхне-Сысертский пруд водой заполнили?


 
VirEx ©   (2008-06-08 21:37) [39]


> [37] Тын-Дын ©   (08.06.08 21:28)

спасибо, завтра посмотрю...


 
VirEx ©   (2008-06-08 21:38) [40]


>  [38] Тын-Дын ©   (08.06.08 21:33)
> Кстати, Верхне-Сысертский пруд водой заполнили?

Незнаю, я там один раз был за семь лет.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2008.08.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.045 c
15-1214647310
Alexandr
2008-06-28 14:01
2008.08.17
Чем отличается фильтрация от сортировки?


15-1214914100
i
2008-07-01 16:08
2008.08.17
Delphi7 and Vista..


2-1216116471
Костик
2008-07-15 14:07
2008.08.17
как определить координаты?


11-1190911322
saturnsuper
2007-09-27 20:42
2008.08.17
Proxies.dcu


2-1216075012
DJ_UZer
2008-07-15 02:36
2008.08.17
кодировки, определение, открытие и преобразование





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский