读书人

有个循环有有关问题查不出

发布时间: 2012-04-24 14:15:38 作者: rapoo

有个循环有问题查不出,请教大家
var
od,cp1:integer;
begin
if OpenDialog1.Execute then
begin
for od := 0 to OpenDialog1.Files.Count-1 do
begin
for cp1:= 0 to ComponentCount - 1 do
begin
if (Components[cp1] is TEdit) then
begin
if (((Components[cp1] as TEdit).Tag mod 3)=1) and ((Components[cp1] as TEdit).Text='') then
begin
(Components[cp1] as TEdit).Text:=ExtractFileName(OpenDialog1.Files.Strings[od]);
Continue;
end;
end;
end;
end;
end;


窗体上有个数不定的EDIT,TAG从1开始自加一。排列如下
1,2,3
4,5,6
7,8,9
10,11,12
13,14,15
我现在的目的是打开文件,选择多个文件后,判断第一列是否有空的EDIT,如果有,就把文件名填上去。但是这个代码有问题,请教。

[解决办法]
另外,如果是需要安装先列后行的顺序进行填充的话,只需要修改FindEdit函数。

Delphi(Pascal) code
function TForm1.FindEdit(const ACol: Byte): TEdit;var  i: Integer;begin  Result := nil;  for i:=0 to ComponentCount - 1 do  begin    if (Components.Tag mod 3 == ACol) and (Components[i] is TEdit)      and ((Components[i] as TEdit).Text = '') then    begin      Result := TEdit(Components[i]);      Break;    end;  end;end;
[解决办法]
探讨

粗略看了一下,发现这个Continue根本就是无用的,当程序执行完毕(Components[cp1] as TEdit).Text:=ExtractFileName(OpenDialog1.Files.Strings[od]);之后,本身就会进入下一次循环,估计也在编译的时候被Delphi给优化掉了,所以你是无法设置断点的,换句话来说,就是编译以后的程序中根本就不会存在这个Continue。
……

读书人网 >.NET

热点推荐