Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FileExists [D5]


R ©   (2004-07-22 04:15:00) 

Функция FileExists довольно-таки глючноватая, подскажите
какими функциями Вы пользуетесь для определения существования
файла.


ALS   (2004-07-22 13:27:00) [1]


function isFileExists(const FileName: string): boolean;
var H: THandle;
   FData: TWin32FindData;
begin
 H := FindFirstFile(PChar(FileName), FData);
 if H = INVALID_HANDLE_VALUE then Result := False
        else
 begin
   Windows.FindClose(H);
   Result := True
 end
end;


MetalFan   (2004-07-22 10:20:00) [2]


> но иногда на существующий файл она возвращает False,

было такое, но под D6. лечилось установкой апдейтов.


Anatoly Podgoretsky   (2004-07-22 10:03:00) [3]

REA ©   (22.07.04 09:57) [11]
И таже ошибка, это не fileexits, исправления смотри в 12. Обратить внимание на faVolume-faDirectory


Anatoly Podgoretsky   (2004-07-22 10:02:00) [4]

Mell   (22.07.04 09:24) [10]

Это надо исправить

function fileexits(filename:string):boolean;
var
  sr:tsearchrec;
begin
  result := findfirst(filename,faanyfile-faVolume-faDirectory,sr) = 0;
findclose(sr);
end;


REA   (2004-07-22 09:57:00) [5]

>if findfirst(filename,faanyfile,sr)=0 then
>result:=true else result:=false;

тоже самое:

Result := findfirst(filename,faanyfile,sr) = 0;


Mell   (2004-07-22 09:24:00) [6]

function fileexits(filename:string):boolean;
var
sr:tsearchrec;
begin
if findfirst(filename,faanyfile,sr)=0 then
result:=true else result:=false;
findclose(sr);
end;


Sergey Kaminski   (2004-07-22 07:06:00) [7]

либо с соотношением файловых атрибутов(дата,размер и т.д.)

Тут где-то уже обсуждалось. Используется функция FileAge, она выдает неправильный результат если дата файла меньше какой-то определенной даты; честно говоря, не помню, какой именно.


R   (2004-07-22 06:17:00) [8]

>Magikan ©  

Не отрабатывает.


R   (2004-07-22 06:07:00) [9]

>Ну пример то приведи.Привести не могу, потому что пример - это конкретный
файл, который функция не определяет, я анализировал,
подозреваю что связано либо с ошибкой структуры файла,
либо с соотношением файловых атрибутов(дата,размер и т.д.),
но это лишь мое предположение.

>Magikan ©  
Потестирую.


Palladin   (2004-07-22 05:46:00) [10]


>  R ©   (22.07.04 04:41)

Ну пример то приведи.


Magikan   (2004-07-22 05:14:00) [11]

Я пользуюсь своей версией FileExists и проблем нет

//Проверка на существование файла
function FileExists(FileName: string): Boolean;
var
 f: File;
begin
 Assign(F, FileName);
 {$I-}
 Reset(F);
 if IOResult=0 then begin
   Result:=True;
   Close(F);
 end
 else
   Result:=False
 {$I+}
end;

В будущем буду переделывать под стандартные вызовы API


R   (2004-07-22 04:41:00) [12]

Не так все просто. На 99,99% у меня тоже к ней притензий нет,
но иногда на существующий файл она возвращает False,
объяснить я этого не могу, файл читаем провоодником и другими
файловыми программами, возможно есть какие то нюансы.

> FileName надо указывать полностью, а не надеяться что рабочей директорией в этот момень является та, о которой вы думаете, и глюков станет меньше

Полностью


ЮЮ   (2004-07-22 04:24:00) [13]

FileName надо указывать полностью, а не надеяться что рабочей директорией в этот момень является та, о которой вы думаете, и глюков станет меньше


antonn   (2004-07-22 04:20:00) [14]

А не могли бы вы описать пару конкретных глюков этой функции?
Все говорят что фуфло, а у меня работает нормально.


Almaz   (2004-07-22 04:18:00) [15]

А в чем ее "глючноватость" проявляется ? Сколько пользовался - не разу не сталкивался.

Удачи.


Наверх

Титульная страница Поиск, карта сайта Написать письмо