printers unit의 내용을 확인해 보시면 아시겠지만, 재미 있는 방법으로 Class를 사용합니다.
Function과 Iniinitialization,Finalization 를 적절히 이용합니다.
결론은 클래스를 리턴하는 함수를 만들고 그함수안에서 클래스가 생성되어 있지 않으면 생성하는 방식입니다.
Finalization은 만들어진 Class를 프로그램이 종료될때 해제 하는방식이고요.
꽤 오래전부터 델파이 Printer를 사용하셨던 분들은 잘 아시는 방법이라 하겠습니다.
구현방법 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
unit Class_Public; interface uses Dialogs; type TMyClass2 = class public procedure a; end; Function MyClass2 : TMyClass2; var FMyClass2 : TMyClass2; implementation Function MyClass2 : TMyClass2; begin if FMyClass2 = nil then FMyClass2 := TMyClass2.Create; Result := FMyClass2; end; { TMyClass } procedure TMyClass2.a; begin showmessage('aaa'); end; initialization FMyClass2 := TMyClass2.Create; finalization FMyClass2.Free; end. |
구현방법 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
unit Class_Public; interface uses Dialogs; type TMyClass2 = class public procedure a; end; Function MyClass2 : TMyClass2; var FMyClass2 : TMyClass2; implementation Function MyClass2 : TMyClass2; begin if FMyClass2 = nil then FMyClass2 := TMyClass2.Create; Result := FMyClass2; end; { TMyClass } procedure TMyClass2.a; begin showmessage('aaa'); end; initialization finalization FMyClass2.Free; end. |
사용예제
1 2 3 |
MyClass2.A; 또는 fMyClass2.A; |
너무 간단하여서 설명이 필요 없을것 같습니다.
최신 댓글