동적으로 생성할 폼을 avaliable form 으로 지정하고
그 폼을 생성할때
try
Form2 := TForm2.Create(Self);
Form2.ShowModal;
finally
Form2.Free;
end;
이런 식으로 생성을 하고 해제를 합니다.
그런데.. 폼이 생성 되어 있는 아닌지를 알기 위해
if Form2 <> Nil Then showmessage('폼이 생성 되어 있습니다');
( if Assigned(Form2) Then Showmessge('... '); )
이렇게 했는데.. 위의 폼을 생성을 한번도 하지 않았을 때에는 if문에 걸리지 않지만.
한번 생성을 하고 폼을 닫은 다음에.. 테스트를 해보면..
폼을 닫았는데도 showmessage가 나옵니다.
분명히 해제를 했는데 왜 이런지....
체크하는 다른 방법이 있는 건지...
> 동적으로 생성할 폼을 avaliable form 으로 지정하고
>
> 그 폼을 생성할때
>
> try
> Form2 := TForm2.Create(Self);
> Form2.ShowModal;
> finally
> Form2.Free;
> end;
>
> 이런 식으로 생성을 하고 해제를 합니다.
>
> 그런데.. 폼이 생성 되어 있는 아닌지를 알기 위해
>
> if Form2 <> Nil Then showmessage('폼이 생성 되어 있습니다');
> ( if Assigned(Form2) Then Showmessge('... '); )
>
> 이렇게 했는데.. 위의 폼을 생성을 한번도 하지 않았을 때에는 if문에 걸리지 않지만.
>
> 한번 생성을 하고 폼을 닫은 다음에.. 테스트를 해보면..
>
> 폼을 닫았는데도 showmessage가 나옵니다.
>
> 분명히 해제를 했는데 왜 이런지....
>
> 체크하는 다른 방법이 있는 건지...
>
>
>
일단 폼과같은 객체는 직접 Free를 부르시지 않는것이 좋습니다.
폼에선는 Free를 직접 부르시지 말고 Release를 부르시기 바랍니다.
그 이유는 Help를 참조하시구요...
Release를 했다면 명시적으로 폼객체에 nil을 해 주시는것이 좋을듯하네요...
어떤 객체를 사용했다면 그것을 해제한 후에라도 명시적으로 nil을 해주시는것이
여러모로 (특히 정신적으로) 이득이 있답니다..