неожиданное ИСТИННОЕ возвращаемое значение из GetAttr при ошибке - PullRequest
0 голосов
/ 04 октября 2019

С этим кодом:

If GetAttr(sFullPath) And vbDirectory then msgbox "is a directory"
  • Передав существующий sFullPath (например, "C: \"), И возвращает 16

  • Передавая несуществующий sFullPath (например, «X: \»), AND возвращает ошибку времени выполнения 76

Насколько я вижу,тест IF рассматривает 0 как FALSE и любое число больше 0 как TRUE.

Вопрос в том, почему msgbox отображается с несуществующим sFullPath? это как если бы GetAttr возвращал неожиданное число больше 0 вместе с ошибкой во время выполнения ...

1 Ответ

0 голосов
/ 05 октября 2019

Я полагаю, что, как предложил Пол в удаленном комментарии, GetAttr возвращает -1 в случае ошибки, а (-1 AND vbDirectory) считается ИСТИНОЙ в тесте IF.

Примечание: я использовал "On Error"Resume Next "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...