바로아래꺼랑 비슷한 내용인데....^^
먼저 TLine라는 클래스를 만들고
그 클래스를 사용하기 위해 폼에서 다음과 같이 선언했습니다.
public
LineG5 : TLine;
그리고 LineG5를 실제로 사용하기전에 꼭
LineG5 := TLine.Create();
를 해줘야 되나요???
C++에서 처럼... 변수선언시 객체까지 만들어진게 아닌가요??
C++에서는 포인터를 선언했을때 new연산자를 사용하고.. 나중에 delete하잖아요.
델파이에서는 반드시 Create해야되는건지.. 아~~ 헷갈려..
그런데 버튼이나 라벨같은 컴포넌트는 Create안하고도 선언만 하고잘 쓰잖아여..
Object Pascal은 개체를 참조(Reference)로 다루기 때문에
변수를 선언했다고 해서 개체를 생성한 것은 아닙니다.
개체는 반드시 명시적으로 생성해줘야 합니다.
Form에다가 컴포넌트를 이것 저것 막 올려놓은것은
코드에서 생성을 안 시켜줬는데 어떻게 쓸 수가 있는가?
이렇게 의아해 하셨습니다만,
Form의 생성자(TCustomForm.Create) 내에서
컴포넌트들을 생성시켜주도록 되어 있어서 눈에 띄지 않는 것 뿐이지
명시적으로 생성해줘야 하는 것임에는 틀림이 없습니다.
수고하세요.
드기 wrote:
> 바로아래꺼랑 비슷한 내용인데....^^
> 먼저 TLine라는 클래스를 만들고
> 그 클래스를 사용하기 위해 폼에서 다음과 같이 선언했습니다.
>
> public
> LineG5 : TLine;
>
> 그리고 LineG5를 실제로 사용하기전에 꼭
> LineG5 := TLine.Create();
> 를 해줘야 되나요???
>
> C++에서 처럼... 변수선언시 객체까지 만들어진게 아닌가요??
> C++에서는 포인터를 선언했을때 new연산자를 사용하고.. 나중에 delete하잖아요.
> 델파이에서는 반드시 Create해야되는건지.. 아~~ 헷갈려..
> 그런데 버튼이나 라벨같은 컴포넌트는 Create안하고도 선언만 하고잘 쓰잖아여..