可能的解释是布尔值通常不存储在单个位中,而是存储在整数中.如果按顺序not
执行整数0(二进制0000 0000 ...),它将是二进制1111 1111 ....),这意味着-1表示两个补码有符号整数.
所以,如果你说,false := 0; true := not false;
那么真的是-1是有道理的.
在各种BASIC方言中,出于同样的原因,true也是-1.
这些特定值的源是肯定下降到0
和-1
可由所述COM布尔类型中使用的值.
当然在Delphi RTL的旧版本中,在将变体从一种类型转换为另一种类型时使用了这个函数,所以我有理由相信COM变体支持是这个决定背后的原因.
你可以看到今日的原代码的残部VariantChangeSimpleIntoSimple
中发现的System.VarUtils
.当被要求转换varBoolean
为varOleStr
它时:
VarOleStrFromStr(Dest, BoolToStr(LSource.VBoolean))
Run Code Online (Sandbox Code Playgroud)
进一步阅读:
归档时间: |
|
查看次数: |
856 次 |
最近记录: |