Советы по Delphi

         

Вопросы разделяемого доступа к файлу


А вы пробовали использовать блок try ... except?

Недавно я решал аналогичную задачу.

Код на основе приведенного ниже скелета отлично справлятеся с поставленной задачей...

    try
{здесь размещается код работы с открытым файлом} ... except
{здесь располагается код обработки исключений} {что-то типа MessageDlg('Не могу открыть файл', mtError, [mbOk], 0) или что-либо получше :) } ... end;

Для EXE & COM файлов может использоваться так называемый сетевой Shareable-атрибут, который позволяет нескольким пользователям выполнять один файл. Для текстовых файлов это не работает.

Единственный метод должен проверять наличие атрибута DOS "READ-ONLY" (только для чтения). Множество DOS & Windows программ устанавливают этот флаг после того, как они откроют файл, чтобы таким образом предотвратить к нему доступ из других программ. В качестве альтернативы, можно проверять атрибут файла NETWARE "READ-ONLY". Проверку можно организовать с помощью компонентов NETWARE API, обеспечивающими работу с сетевыми функциями. Если ваша программа находит одно из этих двух условий истинным, следует подождать некоторое время, и проверить его снова, прежде чем пытаться получить доступ к файлу. [001682]



Содержание раздела