TMemo(Button1)这什么这样转换也能成功? TMemo(Button1),TForm(Button1)这什么这样转换也能成功? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 procedure TForm1.Button1Click(Sender: TObject);var a:TStringList;begin TForm(a).Caption := 'xxxoo'end;2.没有实例化情况下这样也不会出错。并把FORM1的标题改掉了?这是怎么回事?而加上procedure TForm1.Button1Click(Sender: TObject);var a:TStringList;begin a := TStringList.create(); TForm(a).Caption := 'xxxoo'end;3.则出错了。这是为什么呢? 1、第一段代码以前有人讨论过,和编译器有关,不建议这样用2、第二段代码中TStringList类没有Caption属性成员TStringList - TStrings - TPersistentTForm - TCustomForm - TScrollingWinControl - TWinControl - TControl - TComponent - TPersistent procedure TForm1.Button1Click(Sender: TObject);var a:TStringList;begin TForm(a).Caption := 'xxxoo'end;调试模式下反汇编代码:Unit1.pas.35: TForm(a).Caption := 'xxxoo' 0044E1B4 BAC8E14400 mov edx,$0044e1c80044E1B9 E82EF3FDFF call TControl.SetText此时TControl.SetText的第一个参数eax即Form1对象,第二个参数edx指向常量字符串xxxoo,所以调用TControl.SetText就是设置Form1的Caption!--------------霸气侧露的分割线--------------procedure TForm1.Button1Click(Sender: TObject);var a:TStringList;begin a := TStringList.create(); TForm(a).Caption := 'xxxoo'end;调试模式下反汇编代码:Unit1.pas.35: a := TStringList.create();0044E1B4 B201 mov dl,$010044E1B6 A1381C4100 mov eax,[$00411c38]0044E1BB E87C52FBFF call TObject.CreateUnit1.pas.36 TForm(a).Caption := 'xxxoo'0044E1C0 BAD4E14400 mov edx,$0044e1d40044E1C5 E822F3FDFF call TControl.SetText前三行是创建TStringList的实例对象a,创建完成后eax为对象a,而不再是Form1,并且TStringList不是TControl的子孙类,所以就出错了! SOS: tinyint类型在ClientDataSet的Filter中的问题 如何通过访问注册表得到计算机主机名? 怎样控制excel中cell的对齐格式?在线求救呀!急!急!急! 再帮忙一下,SQL语句 这样的SQL语句怎么写?感觉有难度啊 请问,游戏中的鼠标和桌面上的鼠标有什么区别。 苏州朋友请过来集合! 在Delphi中如何对硬盘进行分区? 怎么样使DBGRID一开始就有10行空白表格? 可远程访问的运行ServerSocket的微机,线路有何要求? sql server 表部分数据 导出 导入 delphi的spinEdit
var a:TStringList;
begin
TForm(a).Caption := 'xxxoo'
end;
2.没有实例化情况下这样也不会出错。并把FORM1的标题改掉了?这是怎么回事?
而加上
procedure TForm1.Button1Click(Sender: TObject);
var a:TStringList;
begin
a := TStringList.create();
TForm(a).Caption := 'xxxoo'
end;3.则出错了。
这是为什么呢?
2、第二段代码中TStringList类没有Caption属性成员
TStringList - TStrings - TPersistent
TForm - TCustomForm - TScrollingWinControl - TWinControl - TControl - TComponent - TPersistent
var a:TStringList;
begin
TForm(a).Caption := 'xxxoo'
end;
调试模式下反汇编代码:
Unit1.pas.35: TForm(a).Caption := 'xxxoo'
0044E1B4 BAC8E14400 mov edx,$0044e1c8
0044E1B9 E82EF3FDFF call TControl.SetText
此时TControl.SetText的第一个参数eax即Form1对象,
第二个参数edx指向常量字符串xxxoo,所以调用TControl.SetText就是设置Form1的Caption!
--------------霸气侧露的分割线--------------procedure TForm1.Button1Click(Sender: TObject);
var a:TStringList;
begin
a := TStringList.create();
TForm(a).Caption := 'xxxoo'
end;
调试模式下反汇编代码:
Unit1.pas.35: a := TStringList.create();
0044E1B4 B201 mov dl,$01
0044E1B6 A1381C4100 mov eax,[$00411c38]
0044E1BB E87C52FBFF call TObject.Create
Unit1.pas.36 TForm(a).Caption := 'xxxoo'
0044E1C0 BAD4E14400 mov edx,$0044e1d4
0044E1C5 E822F3FDFF call TControl.SetText
前三行是创建TStringList的实例对象a,创建完成后eax为对象a,而不再是Form1,
并且TStringList不是TControl的子孙类,所以就出错了!