Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 15:47   #1
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
Вопрос Определение свободен файл или нет?

Добрый всем день. помогите пожалуйста.
Проблема в следующем мне нужно читать файлы которые формирует другая программа.
Как узнать когда файл свободен, чтобы можно было его читать.
Буду очень признателен за примеры.
Заранее всем большое спасибо!!!
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума Ответить с цитированием
Старый 02.12.2009, 15:56   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

проверить через FileOpen, если хэндл вернет -1, значит занят
зы: есть нюансик, например при формировании баз данных- архивов, размер файла может увеличиваться (т.е. не мгновенно), это нужно учитывать... как у вас вы не упомянули
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.12.2009, 16:07   #3
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
По умолчанию

Вы знаете мне подсказывал данный вариант Stilet но почему-то у меня все равно проскакивает он через этот контроль не свободный файл.

Даже делал чтобы программа выдавала второй файл с таким же именем но с другим расширением. Но почему-то все равно проблемы возникают.
Сделал вариант с проверкой размера в цикле но тогда программа тормозит на мелких файлах.
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума Ответить с цитированием
Старый 02.12.2009, 16:55   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
у меня все равно проскакивает он через этот контроль не свободный файл
если проскакивает, что странно... значит программа их создающая, сначала создает, а потом пишет в них с неэкслюзивным их открытием
Цитата:
Сделал вариант с проверкой размера в цикле но тогда программа тормозит на мелких файлах.
сие странно... а как часто вы проверяете каталог с архивами на наличие новых файлов с проверкой размера каждого?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.12.2009, 17:18   #5
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
По умолчанию

Я отправляю команду программе в один файл и жду от нее ответа в другой файл. Программа написана сто лет назад еще под ДОС. Мне кажется что файл пишется потом ДОС там что-то мутит в этот момент делфи решает что файл свободен а ДОС начинает писать дальше.
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума Ответить с цитированием
Старый 02.12.2009, 17:20   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

тогда пробуйте временные задержки после появления файла
зы: просто любопытно, не от микроМРВ случаем архивы?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.12.2009, 15:57   #7
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
По умолчанию

Ну так я так и сделал. Измеряю размер жду потом снова мерею снова жду потом сравниваю три. Вот тут вся проблема на малых файлах я теряю время на ожидание.
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума Ответить с цитированием
Старый 03.12.2009, 16:39   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

есть еще способ, опробуйте... функция ReadDirectoryChangesW покажет какой файл "дергается" в заданной директории... алгоритм такой: сравниваете появление файла и его наличие в возвращаемом результате этой функции, если внешняя программа создающая архив все еще пишет в файл, то файл оставить в покое, если нет, то ваши действия... пример по ReadDirectoryChangesW есть на форуме.
зы: вам придется добавить исключение, чтобы не фиксировать свои же действия (просто проверяйте, если ваш exe, то сброс)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.12.2009, 17:21   #9
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
По умолчанию

Ну думаю тогда он все равно проскочит так как файл пишется рывками мне преходилось делать задержку до семи секунд.
Думаю это не вариант!!!
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума Ответить с цитированием
Старый 03.12.2009, 17:23   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Ну думаю тогда он все равно проскочит так как файл пишется рывками мне преходилось делать задержку до семи секунд.
Думаю это не вариант!!!
ну раз пишет рывками (кстати проверьте так ли это через эту функу), то только временные задержки, иначе менять программу их создающую... чем-то нужно "жертвовать"
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid или нет?(С++) Скарам Помощь студентам 7 19.09.2009 19:58
Совпадение или нет? lastochka Свободное общение 14 10.01.2009 23:02
правильно или нет FreeZZZ Паскаль, Turbo Pascal, PascalABC.NET 9 26.12.2008 09:39
Есть или нет MAcK SQL, базы данных 3 27.05.2008 14:45
Лицензионное ПО или нет? pures Свободное общение 1 02.12.2007 06:34