La vérification de la Variante de la valeur “Rien”
C'est quelque chose que j'ai couru dans la dernière année, et semble être un bon endroit pour documenter 🙂
Q: Lors de l'automatisation d'Excel (/Word/...) à partir de Delphi, comment puis-je vérifier si une fonction Excel retourné la variante Nothing
(comme il est appelé dans VBA)?
Vous devez vous connecter pour publier un commentaire.
La
VarIsClear
fonction de votre situation, où le type estvarDispatch
et la valeur estnil
. Il comprend aussi des vides et des "inconnus" des valeurs, et des types de variantes. Je le vois dans mon Delphi 2005 source; je ne sais pas comment beaucoup plus tôt, il était inclus.Curieusement, VBA
Nothing
est pas le même queUnassigned
,Null
ouEmpty
, de sorte que vous ne pouvez pas utiliser, par exemple:Au lieu de cela, utilisez cette fonction:
Mise à jour
Apparemment, les sources de l'RTL unité
Variants.pas
ont changé entre Delphi 5 et 2007. Selon @mghie (voir les commentaires), la fonctionVarIsEmpty
aurait fait la job en D5. Cependant, dans D2007, cela ne semble pas être le cas aujourd'hui, de sorte que vous aurez probablement besoin de la fonction ci-dessus à nouveau.Notez également que VBA
Nothing
est probablement tout à fait un cas particulier; je ne pense pas que l'on rencontre trop souvent avec l'automatisation.Nothing
valeur 🙂Result := FindVarData(V)^.VType = varEmpty;
, qui est certainement quelque chose d'autre... Est-il?VarIsEmpty
fonction dans ma D2007 sources de Variantes.pas.Ne VarIsEmpty (différent de VarIsNull) de ne pas faire ce que vous voulez?
Empty
est quelque chose de tout à fait différent deNothing
--- ce dernier ne semble pas avoir aucun équivalent à Delphes. (J'ai peut-être tort, bien sûr, mais je suis sûr que j'ai vérifié cette). Merci, tout de même!