我相信在delphi中局部整数变量没有初始化为零.初始值是在该存储器位置发生的任何事情.
因此,在第一次单击按钮时,下面的代码中,第一条消息显示整数值.
为什么第二次点击它不会显示3而是显示相同的整数
值?每次单击按钮时,它都会继续显示相同的整数值.仅当我停止并重新启动程序时,该值才不同.
3存储在哪里,因为看起来每次在同一程序运行中单击按钮时使用相同的内存位置?
因此,在第一次单击按钮时,下面的代码中,第一条消息显示整数值.
为什么第二次点击它不会显示3而是显示相同的整数
值?每次单击按钮时,它都会继续显示相同的整数值.仅当我停止并重新启动程序时,该值才不同.
3存储在哪里,因为看起来每次在同一程序运行中单击按钮时使用相同的内存位置?
procedure TForm1.Button1Click(Sender: TObject); var int1 : integer; begin showmessage(inttostr(int1)) ; int1 := 3; end; end.
解决方法
kjack,
它包含当时堆栈帧中的任何值.在你的情况下,这将是发件人.如果您将整数和类型转换为对象,您将注意到“模式”.
procedure TForm1.Button1Click(Sender: TObject); var int1 : integer; begin ShowMessage(TObject(int1).ClassName); showmessage(inttostr(int1)) ; int1 := 3; end; end.