Главная страница
    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.036 c
9-1110976245
Серый
2005-03-16 15:30
2005.06.14
Микширование звуков


11-1099634371
JT
2004-11-05 08:59
2005.06.14
OLE в KOL/MCK


10-1094116683
Тест
2004-09-02 13:18
2005.06.14
JBuilderX & Delphi


1-1117393944
TButton
2005-05-29 23:12
2005.06.14
pointInPoly


1-1117440196
Kolan
2005-05-30 12:03
2005.06.14
Где функция RealizeLength в D7 или её аналог.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский