![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FileExists - дает диалог в XP [D5, WinXP]
z2000 © (2010-03-19 10:15:00)Заметил такую особенность функция FileExists выводит диалоговое окно в win XP когда происходит следующее:
работали с CD ромом, вынули диск и вот если функция после этого проверяет наличие файла на отсутствующем в приводе
диске CD она дает диалоговое окно об отсутствие файла.
Понятно что оно реализовано в недрах WIN API, но все же
как от него избавиться, может кто с таким сталкивался,
эта штука в определеных моментах совсем ненужная и даже вредная...
DVM (2010-03-19 13:16:00) [1]
function FileExists2(const FileName: string): Boolean;
function ExistsLockedOrShared(const Filename: string): Boolean;
var
FindData: TWin32FindData;
LHandle: THandle;
begin
LHandle := FindFirstFile(PChar(Filename), FindData);
if LHandle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(LHandle);
Result := FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0;
end
else
Result := False;
end;
var
Code: Integer;
LastError: Cardinal;
OldMode: Cardinal;
begin
OldMode := SetErrorMode(SEM_FAILCRITICALERRORS);
Code := Integer(GetFileAttributes(PChar(FileName)));
if Code <> -1 then
Result := (FILE_ATTRIBUTE_DIRECTORY and Code = 0)
else
begin
LastError := GetLastError;
Result := (LastError <> ERROR_FILE_NOT_FOUND) and
(LastError <> ERROR_PATH_NOT_FOUND) and
(LastError <> ERROR_INVALID_NAME) and ExistsLockedOrShared(Filename);
end;
SetErrorMode(OldMode);
end;
z2000 (2010-03-19 12:36:00) [2]Anatoly Podgoretsky Спасибо!
Anatoly Podgoretsky (2010-03-19 10:51:00) [3]SetErrorMode
{RASkov} (2010-03-19 10:34:00) [4]> [0] z2000 (19.03.10 10:15)
Приведи пример кода, который выполняет описанное в [0]
evvcom (2010-03-19 10:33:00) [5]Напиши мелким и мягким