我在 Delphi 11.3中遇到了一个array of const
问题。
我有一个功能:MyFunc(test: array of const)
个
当我用整数调用它时,我可以毫不费力地将它们作为整数返回,例如:MyFunc([2,4,9,0)
个test[0]
等按预期工作。
但是,如果我传入一个字符串,例如:MyFunc(['test',9])
个
我无法返回字符串。vType
返回17,_Reserved1
。
我已经看了尽可能多的地方,但我卡住了。有人能解释一下吗,告诉我我做错了什么?
1条答案
按热度按时间46scxncf1#
在现代 Delphi 版本中,默认的字符串类型是
UnicodeString
。现在,
TVarRec
文档没有提到任何UnicodeString
的vType
,但是在System
单元中声明了一个vtUnicodeString
常量,它的值为17
。在
TVarRec
记录中使用相同的常数来检测UnicodeString
。因此,
TVarRec
的文档似乎不是最新的。你可能想知道为什么
vtString
在你的例子中没有被返回。好吧,vtString
实际上是为ShortString
准备的,它将被弃用,或者我应该说已经被弃用了,对于任何移动的平台。您也可以执行下一个测试场景,您将看到每个字符串类型返回哪些值:
字符串