Delphi XE4如何计算变量类型值

nkkqxpd9  于 2023-03-22  发布在  其他
关注(0)|答案(1)|浏览(133)

我写了一个解析器,它接受一个变量数组,并根据类型创建一个字符串。我使用这个字符串作为SQL请求的基础。
阅读文档:https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.Variants.VarType我可以看到有21个CONSTANT值表示各种类型。
下面是提取类型索引的代码片段:typ := VarType(bob);其中typ是整数,bob是变量。
我从文档中期望varString的“typ”为19,但它返回258。
看这里:https://docwiki.embarcadero.com/Libraries/Alexandria/en/System.TVarData我可以看到:#define varString (WordWord_Type)(256)
所以文档表明varString可以是19或256,那么为什么我会得到258呢?

wlsrxk51

wlsrxk511#

我希望从文档中看到varString的“typ”为19。
为什么你会期望这样?根据文档:
https://docwiki.embarcadero.com/Libraries/en/System#Constants
varLongWord/varUInt32(即32位无符号整数)的数值为十进制19,十六进制$13。
另一方面,varString(即AnsiString)的数值为十进制256,十六进制$100。而varUString(即UnicodeString)的数值为十进制258,十六进制$102。
Delphi 的原生String类型自Delphi 2009以来一直是UnicodeString,这就是为什么你会收到varUString值。
顺便说一句,RTL有一个VarToStr()函数,可以将Variant转换为String,支持Variant可以容纳的所有类型。您不需要手动进行转换。

相关问题