Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.056 c
1-1117548684
lucifer
2005-05-31 18:11
2005.06.14
Ошибка: Symbol faReadOnly is specific to a platform


14-1116654893
petya-kurochkin
2005-05-21 09:54
2005.06.14
Курсоры(Обобщение)


14-1116914935
TUser
2005-05-24 10:08
2005.06.14
Пешеходов надо любить (с),


9-1109845708
Alek Aaz
2005-03-03 13:28
2005.06.14
"Потрошитель" GTA. Парсер и конвертор dff и txd файлов.


4-1113930130
Studentik
2005-04-19 21:02
2005.06.14
Создание одноэкземплярного приложения с осложнением...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский