我正在尝试将Delphi2005代码转换为Delphi Tokyo 10.2.3代码。 不再识别功能VarType。 我需要函数VarType来确定变量的基本类型。通常,根据许多帖子,我发现它应该在System.variants单元中。但是,如果我搜索例如在:
它不在本机中。此外,我找不到单位变体,只有单位变体。 但是,使用unit变量会出现运行时错误:记录,对象或类类型是必需的。所以这行不通。
if (System.Variant.VarType(Value) and varTypeMask) =
System.Variant.varString then // VarType(Value) unbekannt
begin
TByte8Array(PRecFORMULA3(PBuf).Value)[0] := 0;
end;
无论如何,我在System.variant中找不到varType。变体了吗?
有人可以帮助我吗?
答案 0 :(得分:0)
您链接到的文档很旧。它是针对Delphi 2009的,它早于Unit Scope Names的引入。但是即使在旧的文档中,VarType()
is documented as being in the Variants
unit(不在Variant
单元中,该单元也不存在)。
单位作用域名称,例如System
,已添加到XE2中的RTL / VCL单位名称中(因此Variants
单位变为System.Variants
)。
Embarcadero的较新DocWiki(取代了旧的Docs网站)清楚地显示了VarType()
function is indeed located in the System.Variants
unit。
请确保:
您的System.Variants
子句中有uses
:
uses
..., System.Variants;
您在项目的单位作用域名称列表中有System
,然后可以在Variants
子句中使用uses
:
uses
..., Variants;
无论哪种方式,您都可以按预期使用VarType()
,而不必完全限定它:
if (VarType(Value) and varTypeMask) = varString then
begin
TByte8Array(PRecFORMULA3(PBuf).Value)[0] := 0;
end;