Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Завершена ли передача файла по сети [D6, WinXP]


Страницы:   1 2

Victor_Ked ©   (2007-05-31 11:21:00) 

Нужно обрабатывать файлы, периодически поступающие из сети в локальную папку. Программа периодически сканирует папку (FindFirst .. FindNext). Но обработка файла часто начинается, когда он еще не полностью закачан! Как узнать, завершилась ли перекачка файла по сети или еще нет?


Сергей М.   (2007-05-31 12:53:00) [21]


> Victor_Ked   (31.05.07 12:44) [17]


Я так понял, что синхронизировать два процесса (сканирующий и обрабатывающий) не представляется возможным ? Или ты попросту об этом не задумывался ?


ЮЮ   (2007-05-31 12:48:00) [22]

> Где гарантия, что после (к примеру) десяти секуд передача
> завершится?

Ну что-то изменится должно за 10 секунд - размер, дата создания/изменения

> А поток создавать не очень-то хочется.
Религия не позволяет?


Victor_Ked   (2007-05-31 12:44:00) [23]

Сканирую я не сеть, а локальную папку, куда поступают файлы из сети. При большой загрузке сети файл может передаваться не пару секунд а значительно больше. Где гарантия, что после (к примеру) десяти секуд передача завершится?

То Плохиш - А поток создавать не очень-то хочется.


ЮЮ   (2007-05-31 12:37:00) [24]

> Решение с временной задержкой - самое простое, но некрасивое
> и неэффективное при большой загрузке сети.


А не ты ли её грузишьсвоим Программа периодически сканирует папку (FindFirst .. FindNext).? :)
Неужели он так загружена, что за несколько секунд и байта переслать не способна?


Плохиш   (2007-05-31 12:35:00) [25]

Так я не понял, что говорит TFileStream.Create(Filename, fmOpenRead or fmShareExclusive); ?


Victor_Ked   (2007-05-31 12:29:00) [26]

To ЮЮ.

Решение с временной задержкой - самое простое, но некрасивое и неэффективное при большой загрузке сети.


ЮЮ   (2007-05-31 12:25:00) [27]

>Сканер по завершению сканирования передает файл (файлы) по сети в папку

Пусть передает сразу в нужеую папку :)

А может просто не сразу пытаться качать, а с несколькисекундной задержкой от даты изменения файла?


Victor_Ked   (2007-05-31 12:24:00) [28]

По-видимому, стандартного способа не существует. Спасибо всем!


Сергей М.   (2007-05-31 12:20:00) [29]

Значит реализуй собственную проверку, по образу и подобию метода TBitmap.ReadDIB, но с возбуждением желаемого исключения.


Victor_Ked   (2007-05-31 12:07:00) [30]

Процедура LoadFromFile корректно работает! Exept не возникает, даже если перекачано только половину файла. Но BitMap наполовину черный!


Сергей М.   (2007-05-31 12:07:00) [31]


> А заголовки корректные


Зато данные, следующие за корректным заголовком, могут быть некорректны.
И попытка интерпретировать эти некорректные данные, например, средствами [6], должна привести к исключению, что в дан.ситуации как раз и можно трактовать как "неготовность" файла к обработке.


clickmaker   (2007-05-31 12:06:00) [32]


> [7] Victor_Ked   (31.05.07 12:03)

пробуй открывать файл для записи


Victor_Ked   (2007-05-31 12:03:00) [33]

To Сергей М.

В процессе передачи размер файла может меняться (1М, 2М, ..). А заголовки корректные.


Сергей М.   (2007-05-31 12:01:00) [34]


> Нужна функция, возвращающая "добро" только в случае завершения
> передачи


Она проста до безобразия:

try
 SomeBitmapObject.LoadFromFile(...);
 Result := 'добро';
except
 Result := 'зло';
end;


Victor_Ked   (2007-05-31 11:58:00) [35]

Открывать то нечего, пока файл не передан полностью. А размеры файлов в общем случае разные. Нужна функция, возвращающая "добро" только в случае завершения передачи.


Сергей М.   (2007-05-31 11:56:00) [36]


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


Что мешает научить программу необрабатывать файлы нулевого размера или размера, или файлы с некорректным (не до конца принятым) заголовком, или не соответствующие данным, указанным в корректном заголовке ?


Плохиш   (2007-05-31 11:52:00) [37]

Попытка открыть эксклюзивно не поможет? Или размер проверять


Victor_Ked   (2007-05-31 11:49:00) [38]

Обычные BMP-файлы со сканера. Сканер по завершению сканирования передает файл (файлы) по сети в папку. В папке создается заголовок файла с нулевой длиной. Программа тут же ловит его и хочет обработать. Но файла то еще нет!


Сергей М.   (2007-05-31 11:40:00) [39]

Что за файлы ?
Кто и какими средствами их передает ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо