Вопросы разделяемого доступа к файлу
А вы пробовали использовать блок try ... except?
Недавно я решал аналогичную задачу.
Код на основе приведенного ниже скелета отлично справлятеся с поставленной задачей...
try {здесь размещается код работы с открытым файлом} ... except {здесь располагается код обработки исключений} {что-то типа MessageDlg('Не могу открыть файл', mtError, [mbOk], 0) или что-либо получше :) } ... end; |
Для EXE & COM файлов может использоваться так называемый сетевой Shareable-атрибут, который позволяет нескольким пользователям выполнять один файл. Для текстовых файлов это не работает.
Единственный метод должен проверять наличие атрибута DOS "READ-ONLY" (только для чтения). Множество DOS & Windows программ устанавливают этот флаг после того, как они откроют файл, чтобы таким образом предотвратить к нему доступ из других программ. В качестве альтернативы, можно проверять атрибут файла NETWARE "READ-ONLY". Проверку можно организовать с помощью компонентов NETWARE API, обеспечивающими работу с сетевыми функциями. Если ваша программа находит одно из этих двух условий истинным, следует подождать некоторое время, и проверить его снова, прежде чем пытаться получить доступ к файлу. [001682]