操作平台:{win2000\delphi6}
工程描述:{一个单窗体工程,主窗体为form1,一个button}
问题描述:
在button1的click事件写入下面的代码时:
procedure TForm1.Button1Click(Sender: TObject);
var
frm : Tform;
begin
Frm.Caption := 'aaaa'; {??为什么没有错误提示}
Frm:=Tform1.Create(Application);
Frm.Caption := 'bbbb'; {??}
Frm.Show;
end;当去掉Frm.Caption := 'bbbb'时{form1的caption变为'aaaa'}
加上这句时{button1的caption改变'aaaa'}效果都满奇怪的,呵呵,不知道这算不算一个BUG{不能随便说的~},希望能与大家统一一下口径.
工程描述:{一个单窗体工程,主窗体为form1,一个button}
问题描述:
在button1的click事件写入下面的代码时:
procedure TForm1.Button1Click(Sender: TObject);
var
frm : Tform;
begin
Frm.Caption := 'aaaa'; {??为什么没有错误提示}
Frm:=Tform1.Create(Application);
Frm.Caption := 'bbbb'; {??}
Frm.Show;
end;当去掉Frm.Caption := 'bbbb'时{form1的caption变为'aaaa'}
加上这句时{button1的caption改变'aaaa'}效果都满奇怪的,呵呵,不知道这算不算一个BUG{不能随便说的~},希望能与大家统一一下口径.
解决方案 »
- delphi调用access数据库,出现“未指定的错误”
- 在pagefooter里用[SUM(<frxDBDataset."总额">,MasterData1)],为何打印预览无显示
- [小菜鸟求助]请教一个DbEdit的数据源绑定问题,因为公司用的是自己的数据连接控件,要在程序中控制绑定
- DELPHI编写时的快捷键,高分!
- 关于图片存储
- 靠!!感觉自己是个正值的人进来看看!!
- 请问:OleContainer控件中的word文档数据怎样置空(空白)?在线等候。。。
- 曾经有一个前辈告诉我视图不可以修改,只是只读,所以我以后查询都不敢修改,但好象不全对
- 各位35以后干什么?我们能干什么?
- 用过ADO的老兄帮忙看一下这个错误为什么?拜托了!
- 发送邮件问题,为何验证失败,100分奉送!急!
- 请教:如何使DbGrid的某一列只能输入指定的几个值
frm : Tform;
begin
Frm.Caption := 'aaaa'; {??为什么没有错误提示}你的frm 是Tform;
我试了没什么奇怪的
这个问题应该算是一个bug;
to stevenpeng(第九种兵器):那button1的caption改变了怎么解释呢?
var
frm : TForm;
然后
frm := TForm1.create(application);
这两个地方(声明和创建实例)和你的问题好象没有什么关系。
在 建立实例前就赋值,理论上是不应该的,你的这个问题至少算个 bug
我主要看了 (xusun)关于类及其实例的问题 我本来想蹭帖的,后来想想还是自己开好了.呵呵,还有想给经常提问题的朋友做一个'模板',这样我们以后解决开才方便容易看懂~
因为实例没有建立,就对这个Object的属性赋值,而且不报告错误。
给出错误的结果当然是内存泄露方面的问题了。
刚才看了汇编的结果,结果说明就是内存泄露造成错误结果出现的。
建立的frm,但并没有建button,为什么在frm中有button1呢?
因为Frm:=Tform1.Create(Application);是由Tform1类创建的,是Tform1的一个实例,也就是说frm继承了Tform1和所有的属性,方法以及.再试试 Frm:=Tform.Create(Application);就会发现不同了
多谢回答。form1,还是form倒没注意。
不是delphi的BUG,二是程序本身的问题,即不对对象创建就是用对象。
如果遵循先创建再使用的规范的话,不会存在这些问题。
关于:
Frm.Caption := 'aaaa'; {??为什么没有错误提示}
1。在编译时,此处无语法错误,当然不提示。
2。运行时,frm应该为随机值,执行到此处应该出错,之所以没有出错,可能是由于delphi编译器的安排,使frm临时指向了存在的窗体(From1\Button),从多次试验看,改指向完全是随机的。
3。如果使用
for i:=0 to 1 do
frm.caption := 'aa';
替代
frm.caption := 'aa';的话,在我的机器上总是出错。(windows2000Professional+Delphi6)。
从这里可以看出,上述问题,并不是delphi的问题,而是程序的问题。
begin
Perform(WM_SETTEXT, 0, Longint(Buffer));
Perform(CM_TEXTCHANGED, 0, 0);
end;
再加一百分!to: Kingron(单身走我路……)
这位高人好,一万年前我们也讨论过,黄河水为什么会少,但现在不知道他们那时候讨论了些什么,麻烦你老人家把一万年前的东西拿出来让我看一下好吧.谢谢.
不好意思您讨论的时候我还小.呵呵
谢谢你的帮助~。我对我上面的话不好意思`别见怪~