Главная страница
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.063 c
2-1164247598
uleess
2006-11-23 05:06
2006.12.10
Необходим дозвоньшик в интернет уневерсальный! Для Win98 и WinXP


3-1160023719
alucard
2006-10-05 08:48
2006.12.10
Подскажите как скопировать DataSet


15-1164009374
cyborg
2006-11-20 10:56
2006.12.10
Нет доступа к рабочей группе


6-1153375981
BloodNV
2006-07-20 10:13
2006.12.10
Сокеты и события


5-1144928569
BPK
2006-04-13 15:42
2006.12.10
Как создать редактор свойства как для TDBGrid.Columns ?