Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.032 c
2-1164488973
ProgRAMmer Dimonych
2006-11-26 00:09
2006.12.10
Как в общем случае определить, где изменяется значение...


15-1164105040
TUser
2006-11-21 13:30
2006.12.10
АТА и обратная совместимость


2-1164146584
flaxe
2006-11-22 01:03
2006.12.10
Вопрос по Паскалю


2-1164178769
alucard
2006-11-22 09:59
2006.12.10
Подскажите нормальное описание всех компонентов Delphi7


15-1163675742
ArtemESC
2006-11-16 14:15
2006.12.10
На речке, на речке, на том бережо--ооочке...




   Наверх