Форум: "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.45 MB
Время: 0.039 c