powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Использование GetAttr
10 сообщений из 10, страница 1 из 1
Использование GetAttr
    #40093108
vgrafin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Win10 + Off10
Проверка существования файла "C:\Base\Журналы\Ошибки_заполнения.txt" для лога.
Пробую давно описанную конструкцию If ((GetAttr(filePath) And VBA.vbDirectory) = VBA.vbDirectory) = True с On Error GoTo
Может не быть самого файла и папки Журналы. Нет папки(ош.53) - MkDir, не файла (ош.76)- создаём файл.
Проверяю. Удалён файл -
GetAttr("C:\Base\Журналы") =16 (vbDirectory)
GetAttr( "C:\Base\Журналы\Ошибки_заполнения.txt") - Ош.53 FileNot Found

Удаляем Журналы
GetAttr("C:\Base\Журналы") - Ош.53 FileNot Found
GetAttr( "C:\Base\Журналы\Ошибки_заполнения.txt") - Ош.76 Path Not Found
Если последний вывод понятен - нет папки, зачем искать файл, то предпоследний вывод не понятен. Вроде тоже должна быть ош.76?
...
Рейтинг: 0 / 0
Использование GetAttr
    #40093138
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я таку конструкцию и не видел еще.... пользуюсь FileScriptingObject
Там все ясно-понятно true - false...
...
Рейтинг: 0 / 0
Использование GetAttr
    #40093153
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vgrafin,

Код: vbnet
1.
2.
3.
4.
5.
6.
' проверка файла
?Dir("C:\temp", vbNormal)

' проверка каталога
?Dir("C:\temp", vbDirectory)
TEMP
...
Рейтинг: 0 / 0
Использование GetAttr
    #40093156
vgrafin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court, Ok, вопрос не в реализации, в блогах с десяток способов. Меня ответ удивил. Я кажется писал в тему "Интересные факты.." или как-то похоже. Почему разный результат вывода? Или это, как всегда, "недокументированные..." или у меня соображалка не того.
...
Рейтинг: 0 / 0
Использование GetAttr
    #40093162
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vgrafin
Удаляем Журналы
GetAttr("C:\Base\Журналы") - Ош.53 FileNot Found
GetAttr( "C:\Base\Журналы\Ошибки_заполнения.txt") - Ош.76 Path Not Found
Если последний вывод понятен - нет папки, зачем искать файл, то предпоследний вывод не понятен. Вроде тоже должна быть ош.76?

ты об этом - GetAttr("C:\Base\Журналы") - Ош.53 FileNot Found
Так есть у тебя путь - C:\Base
А вот файла Журналы - нет
Ты ж не думаешь, что если у посл.компонента пути нет расширения, то ВБА будет его считать каталогом ? )
...
Рейтинг: 0 / 0
Использование GetAttr
    #40093326
vgrafin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК, согласен,"C:\Base\Журналы" может и файл без расширения
А тогда "C:\Base\Журналы\Ошибки_заполнения.txt" согласно 4 вывода - с кого переляку каталог с расширением.
Кстати, зачем я полез в GetAttr - Случайно в коде подсунул MkDir(str), где str оказалось "C:\Base\Журналы\Ошибки_заполнения.txt"
Ну и получил каталог с расширением.
...
Рейтинг: 0 / 0
Использование GetAttr
    #40093345
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vgrafin
....
Кстати, зачем я полез в GetAttr...
А вот это точно-не для создания файла(каталога) или проверки их наличия этот метод...
Можно и микроскопом гвозди забивать....
...
Рейтинг: 0 / 0
Использование GetAttr
    #40093447
vgrafin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, я вроде этим методом и не собирался файлы создавать
Способ
Function FolderExists(strPath As String) As Boolean
On Error Resume Next
FolderExists = ((GetAttr(strPath) And vbDirectory) = vbDirectory)
End Function

описан 10 Exp 10 раз ещё хрен знает когда, по ошибке выдаёт False, а какая там ошибка - функцию не интересует.
Ясно, что невозможно получит атрибуты того, чего нет, невозможно, просто логично было на вопрос о файле ответить -"Файла Нет", а про папку -"Папки нет".
А то стебаться сразу...
...
Рейтинг: 0 / 0
Использование GetAttr
    #40093496
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vgrafin

Ясно, что невозможно получит атрибуты того, чего нет, невозможно,(то бишь выполнить проверку наличия файла\каталога функцией которая для этого не предназначена и удивляться что возникла ошибка.Да и ошибка ли это?? ) просто логично было на вопрос о файле ответить -"Файла Нет", а про папку -"Папки нет".
А то стебаться сразу...
А еще логичнее было бы проверить наличие файла и если он есть получить его атрибуты, а если его нет сообщить об этом и выйти из процедуры.Поверьте-и в мыслях не было "стебаться"
...
Рейтинг: 0 / 0
Использование GetAttr
    #40093808
vgrafin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, подумал, осознал, сделал выводы. GetAttr стояло перед запись лога. Всё прекрасно работало с отсутствием файла(нет файла -ошибка-обработчик-создали-вернулись), пока для эксперимента не удалил директорию. Выкинул предпроверку - нет смысла дёргать её перед каждой записью - удаление файла, а тем более папки маловероятно, а в обработчик ошибок запускать конструкцию, которая опять генерирует практически ту же ошибку - хрень, атрибуты меня не интересуют. Ну, а настал полный Err - через Dir можно хоть до С: проверять. Что выдаёт GetAttr больше исследовать не буду!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Использование GetAttr
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]