请各位帮忙看看这个问题(0分)

  • 主题发起人 主题发起人 awfigsk
  • 开始时间 开始时间
A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
var i : integer;
begin
for i := 0 to self.ComponentCount - 1 do begin
if (self.components is Tedit) and (Tedit(self.components).tag=i) then
TEdit(self.components).text := 'test string';
end;
end;
在上面这段程序中,self.components is Tedit这条语句已经判断这个组件是否为Tedit
类,为什么在后面还要用Tedit(self.components).text将数目为i这个组件转换成Tedit?
这是为什么?还是TEdit()并不是强制转换作用?
 
就是强制转换作用,这样编译器才能确定text属性。也就是说如果没有转换,这个类可能
就没有text属性,就会报错。

前面的判断与下面的没有关系,并没有进行转换。
 
你这样用就明白了:
var
control1:TControl;
i:integer;
for i:=1 to n do
begin
control1:=Form1.FindChildcontrol('edit'+inttostr(i));
control1.setTextBuf(''test string');
end;
 

强制转换,如果不用TEdit强制,会有Text属性吗?
 
接受答案了.
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
896
SUNSTONE的Delphi笔记
S
S
回复
0
查看
873
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部