在Delphi 10.3中,我编写了一些Excel自动化代码。使用了变量(variants)。当程序结束时,我清除并使用freeAndNil释放该变量...
这段代码之前可以正常编译和运行,但是我刚刚升级到了D11(Alexandria)版本后,会出现错误提示:“不兼容的类型:TObject 和 Variant。”
我重新修改了这部分代码为:
VarClear(arrData);
FreeAndNil(arrData);
这段代码之前可以正常编译和运行,但是我刚刚升级到了D11(Alexandria)版本后,会出现错误提示:“不兼容的类型:TObject 和 Variant。”
我重新修改了这部分代码为:
VarClear(arrData);
arrData.Free;
这段代码可以编译运行,并且乍一看似乎工作正常。这是清除/释放Alexandria变体的正确方式吗?
FreeAndNil(var obj)
为procedure FreeAndNil(var Obj:TObject)
。现在,由于Free
是TObject的一个方法,与variant无关,除非他们为variants添加了帮助程序来引入“free”方法,否则这看起来非常不对。 - Ken Bourassa