首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

大家来试试,奇怪的东东…该怎么处理

2012-03-12 
大家来试试,奇怪的东东……procedureTForm1.Button1Click(Sender:TObject)varm1,m2:TMemo//无论什么类都可

大家来试试,奇怪的东东……
procedure   TForm1.Button1Click(Sender:   TObject);
var   m1,m2   :TMemo;//无论什么类都可以
begin
    if   Assigned(m1)   then     //它怎么会存在的呢?是我声明了就存在了?
    m1.Left:=m1.Left+5;
end;

运行的结果是。。。窗体在移动,,,
难道m1,m2默认的指针是窗体的地址?????

[解决办法]
嘿嘿,delphi的问题
[解决办法]
procedure TForm1.Button1Click(Sender: TObject);
var m1,m2 :TMemo;//无论什么类都可以
==================================
如果类中没有Left这个属性,就不行。
==================================
begin
if Assigned(m1) then //它怎么会存在的呢?是我声明了就存在了?
==================================
加个Label控件,再加上下面这句话,你会发现。。。。。。。
Label1.Caption := IntToStr(m1.Left);
==================================
m1.Left:=m1.Left+5;
end;
[解决办法]
Delphi 全局指针定义未使用时是空的, 局部指针变量在未赋值的时候是个随机的地址, 所以在你用到m1.left 的时候delphi 会从那个随机地址开始找到left 属性应该存放的位置,取出值加啊加啊 ! 这样你就看到数值在变!
[解决办法]
BUG
[解决办法]
学习!

[解决办法]
楼上的能说清楚点,为什么会这样吗?
[解决办法]
----------------
我发现了!!!数字在变大~~ 真是吐血
=====================================
你没发现按钮在动么?
难道我用是的D7+WIN2000和你用的不同效果也不同?
[解决办法]
xhxlss()正解
Delphi会自动将全局变量初始化为内存0,而局部变量不做初始化,所以如果你后面要用Assigned去检测,应当在声明玩之后就将变量初始化为nil。

热点排行