This is something I ran into last year, and SO seems like a good place to document it :)
Q: When automating Excel (/Word/...) from Delphi, how can I check if an Excel function returned the variant Nothing
(as it's called in VBA)?
This is something I ran into last year, and SO seems like a good place to document it :)
Q: When automating Excel (/Word/...) from Delphi, how can I check if an Excel function returned the variant Nothing
(as it's called in VBA)?
Curiously, VBA's
Nothing
is not the same asUnassigned
,Null
orEmpty
, so you can't use, e.g.:Instead, use this function:
Update
Apparently, the sources of the RTL unit
Variants.pas
have changed between Delphi 5 and 2007. According to @mghie (see comments), the functionVarIsEmpty
would have done the job in D5. However, in D2007, this does not seem to be the case anymore, so you'll probably need the above function again.Also, note that VBA's
Nothing
is probably quite a special case; I don't think one encounters it too often with automation.Does VarIsEmpty (different than VarIsNull) not do what you want?
The
VarIsClear
function includes your situation where the type isvarDispatch
and the value isnil
. It also includes empty and "unknown" values, and custom variant types. I see it in my Delphi 2005 source; I don't know how much earlier it was included.