with form1,form2 do begin
edit1.text='1';
edit2.text='2';
……
end;
我发现如果begin end之间的语句很多的话(我写了15个类似的语句),会非常慢。
但是去掉一个(比如去掉form2),然后把里面需要用到form2的地方加上form2,速度就非常快了。
我的问题是with这样的语句是如何确定edit1是from1还form2的?
//不用告诉我form1里没有就到form2里去找,我想知道他是如何确定的。
难道这件事要等到执行的时候才判断?
edit1.text='1';
edit2.text='2';
……
end;
我发现如果begin end之间的语句很多的话(我写了15个类似的语句),会非常慢。
但是去掉一个(比如去掉form2),然后把里面需要用到form2的地方加上form2,速度就非常快了。
我的问题是with这样的语句是如何确定edit1是from1还form2的?
//不用告诉我form1里没有就到form2里去找,我想知道他是如何确定的。
难道这件事要等到执行的时候才判断?
解决方案 »
- 程序的数据库连接控件每个窗体都要放吗?
- form1.create 和form1.activate的区别
- 最近在写完成端口。源代码在附件里面。唯独没有写分包代码,希望有高手帮我完成。
- 请问怎么把一个做好的Form放到另一个Form上???
- 如何把一个字符串的字符逐一转换为ASCII码的8进制或16进制表示方式?
- Office二次开发?
- 怎么让dbgrideh的某一列(数据类型为integer)显示时前面自动加上字串 'abc' ???
- 如何操作SQL Server中Binary类型的字段值??高分请教!!
- 请教下:美萍人事管理系统的Tpanel这种效果是怎么做的?
- 急急急!DELPHI出错?
- 谁有Delphi打字软件源码?
- →★★★★★让你的软件一夜成名★★★★★←
不过我还是喜欢用,方便呀。
不方便读程序
你这里的Edit1属于Form2的!·
它得先去判断 edit1.text='1';
edit2.text='2';
是在哪个Form里边,再去执行,而且有个先后顺序问题!
是在编译的时候,还是在运行的时候,根据我的直觉,应该是在运行时判断的。
那么这个和多态有类似的地方吗?我觉得应该没有。那么他是如何判断的呢?
不知道我说明白了没有。
楼上的所有朋友,你们的答案都是我意料之中的,大概是我的表达不清楚。不知道这样说,我的表达是否清楚了。
如:
with form1,form2 do begin
edit1.text='1';
edit2.text='2';
……
end;
form1,form2都有edit1的话,
edit1.text='1';到底是给哪个Form的edit1赋值,这里代码少了还可以看一下,行数多了又怎么看,自己都糊涂了
再好的东西,用滥了就不好了,正如酒是好东西,喝多了也伤身。
最好不要用With Form1,... do
或
with form1 do
with form2 do
这种嵌套的用法
本来如果不使用with,变量是需要两次寻址的,所以,在使用with的情况下似乎更能够提高效率,但是若如楼主所做的那样,我猜想:Delphi应该是分别在form1和form2之后直接加上偏移,然后分别找出是谁的Edit1,否则,真的是没有办法知道是with谁的东西了,(注意他的查找顺序是从后向前)所以,如果是这样的用法:
with form1,form2 do
begin
edit1.text:='1'//那么此处应该是form2的edit1,即使form1也有edit1
end
我的浅论,见笑
with是一柄双刃剑,