Форум: "Начинающим";
Текущий архив: 2008.12.14;
Скачать: [xml.tar.bz2];
ВнизКак ухапшить файл Найти похожие ветки
← →
Scarllett (2008-11-05 10:36) [0]Проблема выглядит таким образом. Некая (мне чуждая программа) формирует свой файл. Время формирования различно от пары секунд до пяти и более минут. Заранее предсказать очень трудно. Мое приложение должно сграбливать данные (отдавать их в БД) после того как формирование файла закончено. По атрибутам файла ничего не понять, пыталась по таймеру смотреть размер файла - приложение вываливается с I/O Error. Мож у кого есть идея, что поделать можно. Заранее благодарна за Ваше время и рассмотрение
← →
Vlad Oshin © (2008-11-05 10:46) [1]C правами какими открываете? Может, "только на чтенеие" поможет? И вообще, поиск на тему Как прочитать занятый файл..
← →
Scarllett (2008-11-05 10:51) [2]Спасибо Влад. В том то и проблема, что он (файл) мне нужен как только (неизвестно когда) освободится, а не в процессе занятости своей
← →
brother © (2008-11-05 10:54) [3]> освободится, а не в процессе занятости своей
обращаться в цикле к файлу на запись, не словили ошибку - файл свободен...
тока вот пока ты грабишь его, прога опять может попутаться произвести запись, а тут ты его занял, ну и не думаю, что прога к такому готова, этож ее файл))))
← →
Плохиш © (2008-11-05 11:00) [4]
> По атрибутам файла ничего не понять, пыталась по таймеру
> смотреть размер файла - приложение вываливается с I/O Error.
Начать надо с изучения обработки исключительных ситуаций в делфи. Ключевые слова try, except, {$I-}
← →
Scarllett (2008-11-05 11:18) [5]Спасибо Бразза, это как я поняла с обработкой on Exception и т.д..., но если если ошибки не будет. выйдет, что я нечто мне не нужное в файл писну. Что ж касается "... прога опять может попутаться произвести запись ..." то этого я не боюсь, я могу управлять тем когда она начнет запись, вот токи не могу заставить ее закончить вовремя (ну в общем, все как в жизни ;-)
← →
Vlad Oshin © (2008-11-05 11:27) [6]не надо писать, надо попытаться открыть с правом на запись
← →
Плохиш © (2008-11-05 11:48) [7]Я бы рекомендовал открывать на чтение в эксклюзивном режиме.
← →
Scarllett (2008-11-05 12:06) [8]Спасибо Влад, Плохиш. Наверно попробую так
долбится Reset (F,1); и на не ошибке делать ухапшивание
Интересно. а совсем других путей нет?
← →
Плохиш © (2008-11-05 12:14) [9]
> Scarllett (05.11.08 12:06) [8]
Если файл не текстовый, то стоит рассмотреть TFileStream.
← →
Scarllett (2008-11-05 12:20) [10]текстовій он, зараза
← →
Anatoly Podgoretsky © (2008-11-05 12:23) [11]
> Scarllett (05.11.08 12:06) [8]
Зачем искать другие пути, если этот нормальный.
Цикл пока ошибка или таймаут.
При том если я верно понял, то это текстовый файл Паскаля, тогда и блокировка на момент операции будет автоматически.
← →
Плохиш © (2008-11-05 12:53) [12]
> Scarllett (05.11.08 12:20) [10]
> Anatoly Podgoretsky © (05.11.08 12:23) [11]
А вот смущает меня эта фраза:
> долбитсяReset (F,1);
и на не ошибке делать ухапшивание
зачем открывать текстовый файл как нетипизированный?
← →
Anatoly Podgoretsky © (2008-11-05 13:18) [13]> Плохиш (05.11.2008 12:53:12) [12]
Опа не обратил внимания.
Короче кода надо больше, по крайней мене определение файла, потому что Reset (F,1); это не текстовый файл Паскаля.
← →
Scarllett (2008-11-05 13:28) [14]Спасибо за обсуждение, я имела ввиду Reset (F)
← →
Правильный$Вася (2008-11-05 14:23) [15]
> делать ухапшивание
у меня море ассоциаций на это слово, и все непечатные
← →
Riply © (2008-11-05 14:42) [16]> [0] Scarllett (05.11.08 10:36)
>...
> Время формирования различно от пары секунд до пяти и более минут. Заранее предсказать очень трудно.
> Мое приложение должно сграбливать данные (отдавать их в БД) после того как формирование файла закончено.
> Мож у кого есть идея, что поделать можно.
Перехватить закрытее файла ?
← →
Scarllett (2008-11-05 14:43) [17]ПравоВасе. Это по-польски, там оно вполне печатно
← →
Riply © (2008-11-05 14:44) [18]> [16] Riply © (05.11.08 14:42)
Очепятка. Sorry :)
← →
Scarllett (2008-11-05 14:45) [19]2 Riply. Именно так, не имея связи с программой, которая закрывает
← →
Leonid Troyanovsky © (2008-11-05 16:24) [20]
> Плохиш © (05.11.08 12:14) [9]
> Если файл не текстовый, то стоит рассмотреть TFileStream.
Без разницы. TFileStream - forever.
> Scarllett (05.11.08 14:43) [17]
> ПравоВасе. Это по-польски, там оно вполне печатно
Хвойное дерево из 3 букв начинается на "п"?
Просим перевод в студию.
> Scarllett (05.11.08 13:28) [14]
> Спасибо за обсуждение, я имела ввиду Reset (F)
Не нужен никакой Reset.
После таймаута на FindFirstChangeNotification &etc
нужно пытаться открыть файл монопольно и сохранить
его в базу вместе со временем доступа.
По-крайней мере, будет консистентность (лат.)
--
Regards, LVT.
← →
Scarllett (2008-11-06 09:44) [21]Спасибо LVT, так и сделаю
насчет перевода в студию ... уХАПшить=схватить=сграбастать=ХАПНУТЬ
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.12.14;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.017 c