Curiosamente, VBA di Nothing
è non la stessa Unassigned
, Null
o Empty
, quindi non è possibile utilizzare, ad esempio:
// Worksheet is a TExcelWorksheet or OleVariant coupled to an open worksheet
MyRange := Worksheet.Range['MyRangeInTheWorksheet', EmptyParam]
if (MyRange = Null) then // won't work!
MsgBox('The range doesn''t exist!');
Invece, utilizzare questa funzione:
function VarIsNothing(V: OleVariant): Boolean;
begin
Result :=
(TVarData(V).VType = varDispatch)
and
(TVarData(V).VDispatch = nil);
end;
// ...
if (VarIsNothing(MyRange)) then
Aggiornamento
Apparentemente, le origini dell'unità RTL Variants.pas
sono cambiate tra Delphi 5 e 2007. Secondo @mghie (vedi commenti), la funzione VarIsEmpty
avrebbe svolto il lavoro in D5. Tuttavia, in D2007, questo non sembra essere più il caso, quindi probabilmente avrai di nuovo bisogno della funzione precedente.
Inoltre, si noti che il numero Nothing
di VBA è probabilmente un caso particolare; Non penso che lo si incontri troppo spesso con l'automazione.
?! Hai ragione! Ho completamente trascurato quello! Ho accettato la tua risposta e cambierò il mio codice sorgente ;-) Grazie mille! – onnodb