Форум: "Прочее";
Текущий архив: 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.048 c