2010-03-08 10 views
6

In Delphi7 habe ich gerade festgestellt, dass nicht nur eine VarIsEmpty Funktion existiert, sondern auch eine VarIsEmptyParam.Was ist der Unterschied zwischen den Funktionen VarIsEmpty und VarIsEmptyParam?

Da die Hilfe von Delphi nicht viel Erklärung nicht geben:

VarIsEmptyParam gibt true zurück, wenn die angegebene Variante einen nicht zugewiesenen optionalen Parameter darstellt.

Wenn die Variante einen anderen Wert enthält, ist das Ergebnis der Funktion false.

Ich habe mich nur gefragt, ob jemand diese Funktion verwendet hat, und wenn ja, wie diese Funktion verwendet werden soll.

Antwort

8

In COM ist es möglich, optionale Parameter in einem Methodenaufruf an einer beliebigen Position zu haben, während in Delphi dies nur am Ende möglich ist. Wenn Sie also den Parameter weglassen möchten, können Sie stattdessen EmptyParam schreiben. EmptyParam ist eine globale Variable, die mit den korrekten Werten initialisiert wird.

Jetzt, wenn Sie eine COM-Schnittstelle implementieren, müssen Sie auch mit diesen optionalen Parametern umgehen. Der Weg, um diese ausgelassenen Parameter herauszufinden, ist VarIsEmptyParam.

Beachten Sie, dass selbst eine leere Variante, die als Parameter angegeben wird, VarIsEmptyParam = false ergibt, weil der Parameter nicht weggelassen wird. Es ist nur leer, aber es ist da.

So gibt es normalerweise:

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

und

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

'EmptyParam' hat eine Variante Typ von' varError' mit einem Fehlerwert von 'Var_ParamNotFound', während eine leere Variante ist eine mit eine Variante von 'varEmpty'. Zwei völlig verschiedene Arten von Daten, nur mit ähnlichen Namen. –