我用递归写了一段代码,需要在满足条件的时候中断这个递归,并返回当前值,如下:
function GetComponent(ComponentClassName:string;AOwner:TComponent):TComponent;
var
i:integer;
begin
Result:=nil;
for i:=0 to AOwner.ComponentCount-1 do
begin
if(AOwner.Components[i].ClassName=ComponentClassName)then
begin
Result:=AOwner.Components[i];//满足条件的时候结束递归,返回此时的值
exit;
end
else
GetComponent(ComponentClassName,AOwner.Components[i]);//递归调用
end;
end;这个函数在其它地方调用,递归查找某个Component到符合条件的时候就结束递归并返回当前值,如:Componetent:=GetCompontent('TEdit',Application);
function GetComponent(ComponentClassName:string;AOwner:TComponent):TComponent;
var
i:integer;
begin
Result:=nil;
for i:=0 to AOwner.ComponentCount-1 do
begin
if(AOwner.Components[i].ClassName=ComponentClassName)then
begin
Result:=AOwner.Components[i];//满足条件的时候结束递归,返回此时的值
exit;
end
else
GetComponent(ComponentClassName,AOwner.Components[i]);//递归调用
end;
end;这个函数在其它地方调用,递归查找某个Component到符合条件的时候就结束递归并返回当前值,如:Componetent:=GetCompontent('TEdit',Application);
意思就是只要满足条件不管什么都结束循环