Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Как проверить возможность записи в файл   Найти похожие ветки 

 
Host ©   (2005-04-23 22:44) [0]

Всем привет!

Помогите, PLEASE!!!

Как проверить в программе возможность записи в файл, если он находится на
сетевом диске. (Запись- через файловую переменную)
Дело в том, что программа работает по сети и записывает данные в один и тот же файл.
Получается такая ситуация, когда с разных компьютеров программа одновременно пытается записать.
Т.е. когда кто-то пишет, другие записать ничего не могут.

По идее должно работать что-то типа IOResult или

...
 Procedure Calc;
 begin
   try
     Append(f);
   expect
     Sleep(500 + random(500));
     Calc;
   end;
 end;
begin
 Randomize;
 Calc;
...


Всё это идеально работает, если файл занят каким-то другим приложением на этом же
компьютере.
Надо чтобы программа ждала открытия доступа.

Как проверить? Заранее спасибо.


 
Eraser ©   (2005-04-23 22:48) [1]

Посмотри в сторону ф-ии CreateFile.


 
Host ©   (2005-04-24 12:37) [2]

Эта функция возвращает Handle на файл. А этого мне не надо.
Можно только попробовать проверить доступ с помощью CreateFile, а затем открыть
его через файловую переменную, но это достаточно коряво, да и будет ли оно действовать?

Всё равно спасибо, поробую.


 
Marser ©   (2005-04-24 14:04) [3]

В случае неудачи CreateFile возвращает INVALID_HANDLE_VALUE.


 
miek ©   (2005-04-24 14:40) [4]

Все это не совсем верно.
В таких случаях, когда прямого соединения компьютеров нет, обычно используется другой подход. Перед записью создают файл-флаг нулевой длины, который используется как аналог крит.секции, а после записи флаг удаляют. Создание файла - атомарная операция и выполняется быстро.


 
Host ©   (2005-04-24 18:27) [5]

Спасибо, это действительно хорошая идея!
Наверное это будет наилушим решением.


 
Host ©   (2005-04-24 18:27) [6]

Спасибо, это действительно хорошая идея!
Наверное это будет наилушим решением.



Страницы: 1 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1117207820
Cash
2005-05-27 19:30
2005.06.14
Проблема целесообразности


14-1116842750
Petr V. Abramov
2005-05-23 14:05
2005.06.14
Несправедливость!


9-1111053252
РшЕус
2005-03-17 12:54
2005.06.14
GLScene


4-1114413798
tradakad
2005-04-25 11:23
2005.06.14
какой лучше ипользовать метод вызова dll?


14-1116766934
Piter
2005-05-22 17:02
2005.06.14
Вот все говорят LMD, LMD...