Delphi XE4如何计算变量类型值

问题描述 投票:0回答:1

我写了一个解析器,它接受一个变体数组,并根据类型创建一个字符串。 我使用这个字符串作为 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?

delphi variant
1个回答
0
投票

我希望文档中的 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
值的原因。

顺便说一句,RTL有一个

VarToStr()
功能,可以将各种类型的
Variant
转换为
String

© www.soinside.com 2019 - 2024. All rights reserved.