Q&A

  • 모달폼 닫기 방식 차이점?
다음은 모달폼의 '닫기'버튼을 눌렀을때 실행되는 부분인데요..

         frm1.Close;
         frm1.Free;
         frm1:=nil;

이런식으로 창을 닫는것과..
창의 오른쪽 위의 x아이콘을 눌러서 닫는것(이게 close죠?-.-a)과 무슨 차이가 있죠??

3  COMMENTS
  • Profile
    최용일 2002.05.23 02:46
    안녕하세요. 최용일입니다.

    큰 차이는 없는거 같으면서도 있네요...

    Frm1이라는 인스턴스변수가 nil로 된다는 것이 가장 큰 차이점이군요...

    첫번째 코딩은 항상 Free된다는 것이구요...

    x아이콘을 누르면 상황에 따라서 Free가 될때도 있고(첫번째 코딩처럼), Minimize될 때도 있습니다.

    ^^ 항상 즐코하세요...

  • Profile
    프로초보 2002.05.23 03:19
    답변 감사합니다..

    무작정 시작해보니.. 개념에서 너무 약세를 보이는군요..-.-;

    nil은 해당 메모리를 비운다는 뜻이구..free두 그와 비슷하게 생각하구 있었는데..
    nil의 개념에 대해서 설명해 주시면 감사하겠습니다..

    님께서도 항상 즐코하시기 바랍니다~~


  • Profile
    최용일 2002.05.23 03:33
    nil은 메모리를 비운다는 뜻이 아니라 아무것도 가리키지 않는다는 뜻입니다. 메모리를 비운다는 것은 Free의 성격이라고 할 수가 있겠네요...

    그러니까 nil은 참조하는 포인터가 없다는 거죠... 델파이에서 모든 객체는 포인터인거 아시죠.

    Free는 생성된 객체를 메모리에서 제거하는 기능을 합니다. 이렇게 메모리에서 제거가되면 그 메모리를 다른 프로그램에서 쓸 수가 있게되는 겁니다.

    Free를 시키더라도 그 객체를 가리키는 인스턴스 변수(아래에서 frm1)는 여전히 같은 곳을 가리키고 있습니다. 그러니까 메모리에서는 제거가 되었지만 같은 위치를 가리키고 있는거죠. (frm1 <> nil) 그렇기 때문에 아무것도 가리키지 않는다는 것을 확실히 하기위에서 (에러방지차원에서...) nil을 대입하는 겁니다...

    ^^ 항상 즐코하세요...