我写了一个解析器,它接受一个变体数组,并根据类型创建一个字符串。 我使用这个字符串作为 SQL 请求的基础。
阅读文档:https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.Variants.VarType 我可以看到有 21 个 CONSTANT 值代表各种类型。
这里是一个提取类型索引的片段:
typ := VarType(bob);
其中 typ 是一个整数,bob 是一个变体。
我希望从文档中可以看出 varString 的“典型值”为 19。但是它返回 258.
看这里:https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.TVarData 我可以看到这个:
#define varString (WordWord_Type)(256)
所以文档表明 varString 可以是 19 或 256,那么为什么我得到 258?
我希望文档中的 varString 的“典型值”为 19.
为什么会这样?根据文档:
https://docwiki.embarcadero.com/Libraries/en/System#Constants
varLongWord
(又名varUInt32
)的数值为十进制 19,十六进制 $13.
另一方面,
varString
(即AnsiString
)的数值为十进制256,十六进制为$100。 varUString
(即 UnicodeString
)的数值为 十进制 258,十六进制 $102.
Delphi 的原生
string
类型自 Delphi 2009 以来一直是 UnicodeString
,因此您收到 varUString
值的原因。
VarToStr()
功能,可以将各种类型的Variant
转换为String
。