interface 부분에서 아래의 클래스를 정의하고
 
type
  TTestClass=class
  public
    procedure TestProc;
  end;
 
 
 
implementation 부분에서 TestProc은 이렇게 만든다.
 
{ TTestClass }
procedure TTestClass.TestProc;
begin
  ShowMessage('이게 보이나요?');
end;
 
 
 
 
 
 
 
 
뭐 정의는 이렇게 해두고, 실제로 사용할 때 재미있는 부분이 있다.
폼에 버튼을 하나 올리고, 이벤트 핸들러를 아래와 같이 작성한다.
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
var X: TTestClass;
begin
  X.TestProc;
end;
 
 
 
이렇게 하면 에러가 안난다!
Create 도 없는데!
 
우리는 생성하지 않은 객체를 참조할 때 에러를 반드시 만나곤 했다.
여기서 재미있는 점은 클래스의 Data 참조만 하지 않는다면 에러가 나지 않는다는 것이다.
클래스 메소드로 처리되는 것이다. c의 static method 처럼.
 
유추해 볼 수 있는 것은 클래스의 경우 create 가 없어도 함수부분은 메모리에 로드가 되고, 데이터부분만 동적으로 생성되는 것 같다는 이야기.
 
하지만 Warning 은 난다... 초기화가 안되어 있다고.
 
 
 
한번 해볼만한 재미는 있는 것 같다.
내부 데이터 없이 함수만 모아놓고 쭈룩쭈룩 쓰는 재미가..-_-;
하지만 가상함수의 경우엔 에러가 난다...





Posted by bloodguy
,