2010-03-08 8 views
6

Lavorando in Delphi7 proprio ora, ho notato che non esiste solo una funzione VarIsEmpty, ma anche una VarIsEmptyParam.Qual è la differenza tra le funzioni VarIsEmpty e VarIsEmptyParam

Dal momento che l'aiuto di Delphi non dà molte spiegazioni:

VarIsEmptyParam restituisce true se la data variante rappresenta un parametro opzionale non assegnato.

Se la variante contiene un altro valore, il risultato della funzione è falso.

Mi stavo chiedendo se qualcuno ha usato questa funzione e, in tal caso, come questa funzione è destinata a essere utilizzata.

risposta

8

In COM è possibile avere parametri opzionali in una chiamata di metodo in qualsiasi posizione, mentre in Delphi questo è possibile solo alla fine. Quindi se vuoi omettere il parametro puoi scrivere EmptyParam. EmptyParam è una variabile globale inizializzata con i valori corretti.

Ora, quando si implementa un'interfaccia COM, anche questi parametri opzionali devono essere gestiti. Il modo per scoprire questi parametri omessi è VarIsEmptyParam.

Si noti che anche una variante vuota data come parametro restituisce VarIsEmptyParam = false, poiché il parametro non viene omesso. È solo vuoto, ma è lì.

così normalmente si trova:

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

e

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

'EmptyParam' ha un tipo di variante' varError' con un valore di errore di 'Var_ParamNotFound', mentre una variante vuoto è uno con un tipo variante di 'varEmpty'. Due tipi di dati completamente diversi, solo con nomi simili. –