В чем разница между функциями VarIsEmpty и VarIsEmptyParam - PullRequest
7 голосов
/ 08 марта 2010

Работая в Delphi7 только сейчас, я заметил, что существует не только функция VarIsEmpty, но также VarIsEmptyParam.

Так как помощь Delphi не дает большого объяснения:

VarIsEmptyParam возвращает true, если данный вариант представляет неназначенный необязательный параметр.

Если вариант содержит любое другое значение, результатом функции будет false.

Мне просто интересно, использовал ли кто-нибудь эту функцию, и если да, то как эта функция предназначена для использования.

1 Ответ

8 голосов
/ 08 марта 2010

В COM можно иметь необязательные параметры при вызове метода в любой позиции, тогда как в Delphi это возможно только в конце. Поэтому, если вы хотите опустить параметр, вы можете написать EmptyParam. EmptyParam - глобальная переменная, инициализированная правильными значениями.

Теперь, когда вы реализуете интерфейс COM, вам также придется иметь дело с этими необязательными параметрами. Способ выяснить эти пропущенные параметры: VarIsEmptyParam.

Обратите внимание, что даже пустой вариант, заданный в качестве параметра, дает VarIsEmptyParam = false, потому что параметр не опущен. Это просто пусто, но оно есть.

Так обычно есть:

VarIsEmpty(v) ==> not VarIsEmptyParam(v)

и

VarIsEmptyParam(v) ==> not VarIsEmpty(v)
...