Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 |

 

  Вопрос: Реагировать на запись в файл Добавлено: 19.01.06 16:41  

Автор вопроса:  Max
Народ, подскажите пожалуйста.

Имеется текстовый файл, в который время от времени кто-то что-то пишет.

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

Заранее спасибо

Ответить

  Ответы Всего ответов: 37  

Номер ответа: 1
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #1
Добавлено: 19.01.06 16:45
не проверяя его раз в какое-то время

проверять его раз в какое-то время. :) можно проверять про времени файла, например, можно по crc-сумме..

Ответить

Номер ответа: 2
Автор ответа:
 Max



Вопросов: 12
Ответов: 17
 Профиль | | #2 Добавлено: 19.01.06 16:50
:) как проверять я знаю...
но мне не совсем подходит ждать долго после записи.
долго - это больше нескольких секунд.

Ответить

Номер ответа: 3
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 19.01.06 16:56
Долго - проверяй раз меньше чем в секунду.. делай проверку на API'шном таймере. Чтобы не такой таймер не тормозил тебе процесс, можешь проверку вынести в отдельный поток. Но и этой проблемы вроде нет, если таймер на API.

Ответить

Номер ответа: 4
Автор ответа:
 GeorgeGA



Вопросов: 1
Ответов: 101
 Профиль | | #4 Добавлено: 19.01.06 16:58
сразу не соображу,но вот деревянный метод:)
ставь таймер на постоянную проверку файла, но в процедуру допиши doevents,чтоб тачку не вешать

Ответить

Номер ответа: 5
Автор ответа:
 Max



Вопросов: 12
Ответов: 17
 Профиль | | #5 Добавлено: 19.01.06 17:00
Да, жти методы мне более-менее известны
я думал может через сообщения Виндов что-то можно сделать

Ответить

Номер ответа: 6
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #6
Добавлено: 19.01.06 17:08
Перехватывать те API, что пишут в файл, причём именно в этот.. Задача не самая простая.

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

Ответить

Номер ответа: 7
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #7
Добавлено: 19.01.06 17:13
Задачу как у тебя решают обычно разработчики СУБД, они создают для этого сервер баз данных и всем желающим надо подключатья не к файлам самим, а к серверу. Опять же, если только твоё приложение работает с этими данными, пусть оно подключается к твоему "Серверу".

Ответить

Номер ответа: 8
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #8
Добавлено: 19.01.06 17:14
А что ты пишешь, просто интересно?

Ответить

Номер ответа: 9
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #9
Добавлено: 19.01.06 17:27
Может просто проверять размер в цикле, и выдавать сообщение при
изменении размера
FileLen


Ответить

Номер ответа: 10
Автор ответа:
 Tamplier



ICQ: 298742928 

Вопросов: 58
Ответов: 340
 Профиль | | #10 Добавлено: 20.01.06 11:23
Рут, не выйдет. Пока цикл идет, ты ничего сделать не сможешь.
Мне как-то пришлось столкнуться с проблемой, что пока идет цикл, упраление на таймер на форме не переходит. Пришлось апи-ф-ю использовать.

Ответить

Номер ответа: 11
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #11
Добавлено: 20.01.06 11:38
всмысле, цикл идет, размер изменился выйти из цикла и выдать
сообщение, потом опять в цикл

Ответить

Номер ответа: 12
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #12
Добавлено: 20.01.06 11:43
Кстати у меня пример есть, запускаешь 2 версии одной проги и если в
одной происходят изменения, то вторая фиксирует в реальном времени!

Ответить

Номер ответа: 13
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #13 Добавлено: 20.01.06 11:51
В цикле можно воткнуть DoEvents :)
А проверять лучше всего не длину файла, а дату изменения.

Ответить

Номер ответа: 14
Автор ответа:
 Max



Вопросов: 12
Ответов: 17
 Профиль | | #14 Добавлено: 22.01.06 12:20
mc-black
грубо говоря, программа, которая собирает информацию с некого устройства, которое читает информацию с магнитной полосы и записывает это в файл.
Так уж получилось (независимо от меня), что я не могу делать это напрямую из моей программы.
Т.к. это связпно с работой с людьми, то после проведения "карточки" в устройстве должно пройти минимальное время...

Ответить

Номер ответа: 15
Автор ответа:
 Max



Вопросов: 12
Ответов: 17
 Профиль | | #15 Добавлено: 22.01.06 12:22
Если кому интересно - мне подкинули информацию про вариант для .NET - пользоваться классом FileSystemWatcher (Ожидает уведомления файловой системы об изменениях и инициирует события при изменениях папки или файла в папке.)

)

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам