Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.10;
Скачать: CL | DM;

Вниз

Проверка файла   Найти похожие ветки 

 
Wolferio ©   (2006-11-21 15:16) [0]

Добрый день.
Как проверить используется ли файл другой программой или пользователем, а также испольжуется ли файл по сети.
Использую такую функцию, но она работает не правильно, помогите разобраться:

function WorkFile(fName: string): boolean;
var
HFileRes: HFILE;
begin
Result := false;
if not FileExists(fName) then exit;
HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then CloseHandle(HFileRes);
end;

Заранее благодарен.


 
Сергей М. ©   (2006-11-21 15:18) [1]


> она работает не правильно


И на основании чего сделано сие умозаключение ?


 
clickmaker ©   (2006-11-21 15:32) [2]

в дополнение к этому
(HFileRes = INVALID_HANDLE_VALUE);
надо еще
GetLastError() = ERROR_SHARING_VIOLATION


 
Wolferio ©   (2006-11-21 16:07) [3]


> И на основании чего сделано сие умозаключение ?

Методом научного..........


> в дополнение к этому
> (HFileRes = INVALID_HANDLE_VALUE);
> надо еще
> GetLastError() = ERROR_SHARING_VIOLATION

После какой строки я должен прописать GetLastError() = ERROR_SHARING_VIOLATION
Если можно пропиши в эту функцию а то я не совсем понимаю.

Спасибо.


 
clickmaker ©   (2006-11-21 16:40) [4]


> [3] Wolferio ©   (21.11.06 16:07)

если Handle = INVALID, это всего лишь значит, что файл не удалось открыть. А GetLastError() вернет причину отказа.
Ку?


 
Anatoly Podgoretsky ©   (2006-11-21 17:08) [5]

> Wolferio  (21.11.2006 16:07:03)  [3]

Ну это совсем простейшая функция, проще быть не может, она возвращает код ошибки

N := GetLastError;


 
Wolferio ©   (2006-11-22 13:04) [6]

Тему продолжаю снова поскольку даная функция не всегда работает.

    Если файл открыт например Word-ом то функци я возвращает код ошибки, тоисть файл занат, но если файл открыть например Far-ом то функция возвращает код ошибки 0 тоисть файл не занят другой програмой или пользователем. Может у кого есть иной подход к решению этой проблеми.


 
clickmaker ©   (2006-11-22 13:06) [7]


> но если файл открыть например Far-ом то функция возвращает
> код ошибки 0 тоисть файл не занят

Far (как и любая другая программа) может открыть, прочитать в память и закрыть



Страницы: 1 вся ветка

Текущий архив: 2006.12.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
8-1145904682
Pojarnik
2006-04-24 22:51
2006.12.10
Отлов WM_CAP... сообщений


15-1164091096
zdm
2006-11-21 09:38
2006.12.10
DeleteFile


1-1161939857
Jolik
2006-10-27 13:04
2006.12.10
Есть работа... (сорри за оффтоп - в форуме "Прочие" ...


2-1164489332
kami
2006-11-26 00:15
2006.12.10
Потокобезопасность TStringList


15-1164298836
Mr. D
2006-11-23 19:20
2006.12.10
Посоветуйте простенький DHCP-сервер