为什么新编译器在这段旧代码中没有识别出"NULL"?

out*_*ime 1 delphi adsi delphi-2006

我刚刚下载了ADSI,它似乎与Delphi Embarcadero XE4不兼容.

当我尝试编译其中一个示例时,我收到此错误:

[dcc32 Error] adshlp.pas(128): E2003 Undeclared identifier: 'NULL'
Run Code Online (Sandbox Code Playgroud)

这就是这条线:

varArr := NULL;
Run Code Online (Sandbox Code Playgroud)

怎么了?

Rob*_*edy 15

Null曾经在系统单元中声明,因此它在全球范围内可用.在Delphi 6中,所有与Variant相关的代码都移出该单元并进入新的Variants单元.由于Null是一个返回Variant的函数,Null因此包含在移动中,因此它不再隐式可用.

要修复旧代码,只需在任何需要它的单元中将Variants添加到您的uses子句中:

uses ..., Variants;
Run Code Online (Sandbox Code Playgroud)