问题是简单,但不太好回答。要知道编译器如何截断一部分内存存储空间,你只须在Delphi中写上测试指令,然后调试时打开CPU窗口上汇编指令就能能看明白了。像你所给的代码,在CPU窗口中大概会被编译成如下的指令
mov eax,treeView1.items.Count // 先取得Count的值
test al,al // if Boolean(Count) then
,这里就是将eax长整数变成Boolean(al)再测试al的值。
jz @FALSE
......
@FALSE:
......