Q&A

  • 메소드의 포인터에 대해서
안녕하세요.. 컴포넌트 관련 부분을 보다가... 한가지 궁금한게 있어서

질문을 드립니다.

보다가 메소드 포인터라는 부분이 있는데...

사용은 예를 들면

type

MethodPointerType = procedure (Num:integer) of object ;

이런 형태로 쓰이는데.. 컴포넌트를 만들거나 할때 사용하는거 같습니다...

C로보면 함수의 포인터라구 생각하는데.. 이건 구체적으로 어떤걸

야그하는지 잘 모르겠습니다.

클래스를 정의하고 프로시져를 선언하고 메소드를 정의할때 할당하는

식으로 사용하는거 같은데... 책을 봐두. 잘 이해가 안가네요..

그럼 추운날 프로그래밍 하는데 고생이 많겠지만.. 부탁드립니다...

1  COMMENTS
  • Profile
    윤영길 2000.12.19 23:08
    메소드 포인터인가요?

    그것은 콤포넌트나 다른 DLL 등에서 함수를 지정한다거나 할 때에 쓰입니다.

    즉 일반 Form의 OnCreate 이벤트도 메소트 포인터로 지정한것인데

    OnCreate 는 TNotifyEvent 형을 사용합니다.

    TNotifyEvent 는

    procedure (Sender: TObject) of object 와 같은 타입인데..



    콤포넌트를 만들때에

    FOnCreate: TNotifyEvent;

    로 정의를 먼저 하고

    Published 부분에서

    Property OnCreate: TNotifyEvent Read FOnCreate Write FOnCreate;

    로 선언해 줍니다.



    그러면 OnCreate 이벤트가 Form 의 이벤트에 추가가 되고..

    그렇게 콤포넌트에서 사용합니다.



    그리고 OnCreate 이벤트는 다른 함수로 변경할 수 있다는 것은

    함수원형만 같다면 가능한데 이것은 C 의 함수포인터와 비슷한

    개념입니다.



    가령 Form1.OnCreate:=MyCreate; 로 바꾸고

    MyCreate 함수는 procedure MyCreate(Sender: TObject); 형태이면

    된다는 말입니다.



    심종현 wrote:

    > 안녕하세요.. 컴포넌트 관련 부분을 보다가... 한가지 궁금한게 있어서

    > 질문을 드립니다.

    > 보다가 메소드 포인터라는 부분이 있는데...

    > 사용은 예를 들면

    > type

    > MethodPointerType = procedure (Num:integer) of object ;

    > 이런 형태로 쓰이는데.. 컴포넌트를 만들거나 할때 사용하는거 같습니다...

    > C로보면 함수의 포인터라구 생각하는데.. 이건 구체적으로 어떤걸

    > 야그하는지 잘 모르겠습니다.

    > 클래스를 정의하고 프로시져를 선언하고 메소드를 정의할때 할당하는

    > 식으로 사용하는거 같은데... 책을 봐두. 잘 이해가 안가네요..

    > 그럼 추운날 프로그래밍 하는데 고생이 많겠지만.. 부탁드립니다...