D
dwwang
Unregistered / Unconfirmed
GUEST, unregistred user!
在李宏光兄的帖子中我说到了"程序的逻辑独立性"问题,
引来很有意思的讨论,这里再说明一下:
写那个帖子时是在客户的眼皮底下拨长途到北京上网,
难免有点做贼心虚的感觉,果然忙中出错,Copy/Paste
的时候竟然全盘照搬李宏光兄的代码,只加了一个T,成为:
procedure Tform1.mypro ;
^
begin
form1.edit1.text:='123456';
end;
结果一下在被Another_eYes大虾抓住了把柄,实在惭愧,
正确的过程当然应该如:
procedure Tform1.mypro ;
begin
...
edit1.text:='123456';
...
end;
感谢Another_eYes大虾一针见血的指出那段程序的毛病(还真有点疼呢!)
不过,我所说的"程序的逻辑独立性"显然不是指这段代码,
而是我在第二种方法中建议的将Form作为参数传递的方式:
procedure MyPorc(theForm:TMyform;....);
begin
then
Form.Edit1.....
end;
这样,myProc就可以不必定义为TMyForm的成员,不必知道Form的名称,
而且也不一定定义在TMyForm的unit中。
实际应用中,以Form作为参数实际意义不大,但这方面最典型的例子
包括Field的OnGetText等等事件的定义,那里通过Sender将当前
触发事件的Field作为参数传递,从而可以使事件的代码不必
关心当前Field的名称,而对其数据进行处理。
我之所以提到这个问题,是因为看到宏光兄感叹"重复劳动的悲哀",
对于一个较大规模的软件系统而言,程序结构的优劣是至关重要的。
引来很有意思的讨论,这里再说明一下:
写那个帖子时是在客户的眼皮底下拨长途到北京上网,
难免有点做贼心虚的感觉,果然忙中出错,Copy/Paste
的时候竟然全盘照搬李宏光兄的代码,只加了一个T,成为:
procedure Tform1.mypro ;
^
begin
form1.edit1.text:='123456';
end;
结果一下在被Another_eYes大虾抓住了把柄,实在惭愧,
正确的过程当然应该如:
procedure Tform1.mypro ;
begin
...
edit1.text:='123456';
...
end;
感谢Another_eYes大虾一针见血的指出那段程序的毛病(还真有点疼呢!)
不过,我所说的"程序的逻辑独立性"显然不是指这段代码,
而是我在第二种方法中建议的将Form作为参数传递的方式:
procedure MyPorc(theForm:TMyform;....);
begin
then
Form.Edit1.....
end;
这样,myProc就可以不必定义为TMyForm的成员,不必知道Form的名称,
而且也不一定定义在TMyForm的unit中。
实际应用中,以Form作为参数实际意义不大,但这方面最典型的例子
包括Field的OnGetText等等事件的定义,那里通过Sender将当前
触发事件的Field作为参数传递,从而可以使事件的代码不必
关心当前Field的名称,而对其数据进行处理。
我之所以提到这个问题,是因为看到宏光兄感叹"重复劳动的悲哀",
对于一个较大规模的软件系统而言,程序结构的优劣是至关重要的。