fexist(filepath[,type])
Список типов, например, такой:
1 (0b00000001)- файл
3 (0b00000011)- симлинк к файлу
65 (0b01000001) - папка
66 (0b01000010) - junction
67 (0b01000011) - симлинк к нефайловому объекту
Если тип не указан, возвращаем:
- 0 - объекта с именем нет
- тип объекта
- -3 - нет доступа Read к объекту
- -4 - невозможно проверить существование объекта (нет доступа к родительской папке)
- -255 - прочие ошибки
- 2 - файл ненулевой длины / непустая папка / симлинк или junction на соответствующий объект
- 1 - файл нулевой длины / пустая папка / симлинк или junction на соответствующий объект
- 0 - объект не существует
- -1 - объект существует, но указывает на недоступную папку / несуществующий файл (только для симлинков/junction)
- -2 - существует объект с таким именем, но другого типа
- -3 - нет доступа Read к объекту
- -4 - невозможно проверить существование объекта (нет доступа к родительской папке)
- -255 - прочие ошибки
Будет очень удобно проверять одновременно существование, например, папки и возможность ее создания:
Code: Select all
fexist("C:\Folder")
Новый синтаксис гибок к дальнейшим изменениям: можно добавлять новые типы объектов и ошибок.
Существующие макросы, возможно, потребуют некоторой доработки, но... за все надо платить. Подчеркну - возможно, только в том случае, если в макросе проверяется "единичность" вместо "ненулевости" и "неравность единице" вместо "нулевости" (). Но такую манеру описания условий вряд ли можно назвать хорошим тоном. Еще несовместимость может возникнуть, если код возврата функции потом с чем-нибудь складывается.