Q&A

  • 열겨형변수
어는 소스를 보다가.

TBroad = procedure(sender, objTarget : TObject;
                              btValue : TBroadType;
                              boValue : TBroadOption) of object

라는 부분이 나오는데

TBroadType 과 TBroadOption 은 열거형 변수인데
TBroad 처럼 프로지저를 저장할수도 있나요..

이건 도대체 무슨 의미죠?
1  COMMENTS
  • Profile
    사기꾼 2003.08.22 19:58
    TBroad는 함수형 변수라고 합니다.
    뒤에 of object가 붙었으므로
    클래스의 맴버가 됩니다.


    TForm1 = class(TForm)
      ...
       broad : TBroad;   // 클래스의 멤버로 함수형 변수를 선언합니다.
      ...
    end;

    // 함수가 어딘가 있어야겠죠?
    procedure TForm1.processing(sender, objTarget : TObject;
                                  btValue : TBroadType;
                                  boValue : TBroadOption);
    begin
      ...
    end;

    procedure TForm1.FormCreate(Sender:TObject);
    begin
      broad := processing;  // 함수형 변수에 실제 procedure를 대입하죠?
    end;

    procedure TForm1.AnyEventHandlerOrFunction(objTarget : TObject;
                                  btValue : TBroadType;
                                  boValue : TBroadOption);
    begin
      if assigned(broad) then   // 함수형변수에 실제 펑션이 할당되었는지 검사
         broad(self,objTarget,btValue,boValue);  // 아싸 실행
    end;