Delphi 10.2.3: Delphi函数VarType()在什么地方?
Delphi 10.2.3: Where is in Delphi the function VarType ()?
我正在尝试将 Delphi2005 代码转换为 Delphi Tokyo 10.2.3 代码。
函数 VarType
不再被识别。
我需要函数 VarType
来确定变体变量的基本类型。一般来说,我发现,根据许多帖子,它应该在单位 System.Variants
中。但是,如果我搜索例如在:
不在本单元内。此外,我找不到单位变体,只有一个单位变体。
但是,使用 unit 变体时出现运行时错误:
Record, object or class type necessary
。所以这行不通。
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
。变种不存在了吗?
谁能帮帮我?
您链接到的文档很旧。它适用于 Delphi 2009,早于 Unit Scope Names. But even in that old documentation, 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.
确保:
您的 uses
子句中有 System.Variants
:
uses
..., System.Variants;
您的项目的单元范围名称列表中有 System
,然后您可以在 uses
子句中使用 Variants
:
uses
..., Variants;
无论哪种方式,您都可以按预期使用 VarType()
,而不必完全限定它:
if (VarType(Value) and varTypeMask) = varString then
begin
TByte8Array(PRecFORMULA3(PBuf).Value)[0] := 0;
end;
我正在尝试将 Delphi2005 代码转换为 Delphi Tokyo 10.2.3 代码。
函数 VarType
不再被识别。
我需要函数 VarType
来确定变体变量的基本类型。一般来说,我发现,根据许多帖子,它应该在单位 System.Variants
中。但是,如果我搜索例如在:
不在本单元内。此外,我找不到单位变体,只有一个单位变体。 但是,使用 unit 变体时出现运行时错误:
Record, object or class type necessary
。所以这行不通。
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
。变种不存在了吗?
谁能帮帮我?
您链接到的文档很旧。它适用于 Delphi 2009,早于 Unit Scope Names. But even in that old documentation, 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.
确保:
您的
uses
子句中有System.Variants
:uses ..., System.Variants;
您的项目的单元范围名称列表中有
System
,然后您可以在uses
子句中使用Variants
:uses ..., Variants;
无论哪种方式,您都可以按预期使用 VarType()
,而不必完全限定它:
if (VarType(Value) and varTypeMask) = varString then
begin
TByte8Array(PRecFORMULA3(PBuf).Value)[0] := 0;
end;