2010-03-08 13 views
6

Obecnie pracując w Delphi7, zauważyłem, że istnieje nie tylko funkcja VarIsEmpty, ale także VarIsEmptyParam.Jaka jest różnica między funkcjami VarIsEmpty i VarIsEmptyParam

Ponieważ pomoc Delphi nie daje wiele wyjaśnienie:

VarIsEmptyParam Zwraca true jeśli dana odmiana stanowi obsadzony opcjonalny parametr.

Jeśli wariant zawiera dowolną inną wartość, wynikiem funkcji jest fałsz.

Zastanawiam się, czy ktoś użył tej funkcji, a jeśli tak, to w jaki sposób ta funkcja ma być używana.

Odpowiedz

8

W COM można mieć opcjonalne parametry w wywołaniu metody w dowolnej pozycji, podczas gdy w Delphi jest to możliwe tylko na końcu. Jeśli więc chcesz pominąć parametr, możesz zamiast niego napisać EmptyParam. EmptyParam jest zmienną globalną zainicjowaną prawidłowymi wartościami.

Teraz, gdy wdrażasz interfejs COM, musisz sobie poradzić z tymi opcjonalnymi parametrami. Sposób na znalezienie tych pominiętych parametrów to VarIsEmptyParam.

Należy zauważyć, że nawet pusty wariant podany jako parametr daje VarIsEmptyParam = false, ponieważ parametr nie zostanie pominięty. Jest po prostu pusty, ale jest tam.

Więc normalnie znajduje się:

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

i

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

'EmptyParam' ma typ wariantu z' varError' z wartością błędu 'Var_ParamNotFound', natomiast pusty wariant jest jednym z wariant typu 'varEmpty'. Dwa całkowicie różne rodzaje danych, tylko o podobnych nazwach. –

Powiązane problemy