답변 감사드립니다.
아래와 같이도 작성해보았는데 해제작업이 안되요
감사합니다.
for i := ComponentCount - 1 down 0 do
beign
// Do destory Instance
end;
gomsun2 님이 쓰신 글 :
: 안녕하세요 따랑님 :) 오늘 두번이나 뵙네요.
:
: 팁, 트릭 란에 올리신 질문은 삭제 해주시고요,
:
: 답변입니다.
:
: 파괴를 하는 루틴에서는 looping 할 때 역순으로 해야 합니다.
: 5개의 컴포넌트를 찾아 파괴하는 시나리오를 생각해 보면
:
: 각각의 인덱스가 아래와 같이 있다고 가정하고,
: 0, 1, 2, 3, 4
:
: 파괴를 위한 루핑을 시작합니다.
: i 는 0 일때 1번 돌면
: 0, 1, 2, 3
:
: i 는 1 일때 2번 돌면
: 0, 1, 2
:
: i 는 2 일때 3번 돌면
: 0, 1
: 문제가 발생합니다.
:
: 때문에 리스트(Components)에 담긴 인스턴스를 파괴할려면
:
: for i := ComponentCount - 1 down 0 do
: beign
: // Do destory Instance
: end;
:
: 와 같이 작업하셔야 합니다.
:
: 즐코하세요 :)
:
: 따랑 님이 쓰신 글 :
: : 안녕하셔요
: : 컴포넌트를 Button,Edit,Label등을 반목하여 생성하여 ㅅ해제후 또 생성하는 작업입니다
: : 생성과 해제가 반복되는 작업입니다.
: : 그런데 같은 컴포넌트를 찾아서 해제하는 작업에 문제가 있습니다.
: : 부탁드립니다.
: : 소스는 아래와 같습니다.
: :
: : For i:=0 to Self.ComponentCount-1 Do Begin
: : If (Pos('aSend_' ,TButton(Self.Components[i]).Name)<>0) Or
: : (Pos('aDelete' ,TButton(Self.Components[i]).Name)<>0) Then TButton(Self.Components[i]).Free
: : Else If (Pos('aEdit_' ,TEdit (Self.Components[i]).Name)<>0) Then TEdit (Self.Components[i]).Free
: : Else If (Pos('aMemo_' ,TMemo (Self.Components[i]).Name)<>0) Then TMemo (Self.Components[i]).Free
: : Else If (Pos('aLabel_' ,TLabel (Self.Components[i]).Name)<>0) Then TLabel (Self.Components[i]).Free
: : Else If (Pos('aShape_' ,TShape (Self.Components[i]).Name)<>0) Then TShape (Self.Components[i]).Free
: : Else If (Pos('aImage_' ,Timage (Self.Components[i]).Name)<>0) Then Timage (Self.Components[i]).Free;
: : End;
: :