Q&A

  • 워닝이 나왔는데.. 무시해도 되는지..
* 사용환경 : 델파이5 / Windows2000

* 에러 메시지 :

Mothod "Create" hides virtual method of base type "TCustomForm"



일반적으로 TForm1.Create는 TComponent를 인자로 받게 되어 있다는건 알고 있습니다.

그런데 여기에 초기화해야할 변수가 있어서 constructor Create를 다시 선언한 후

해당 생성자를 다시 상속자에게 돌려주도록 했는데 에러 메세지가 뜨네여..



즉..

...(생략)

public

constructor Create (AOwner: TComponent; myVar: Itneger); <<< 요기가 에러~



...(중략)



constructor TForm1.Create (AOwner: TComponent; myVar: Itneger);

begin

myLocalVar := myVar;

inherited Create(AWoner);

end;



이렇게 해서 생성한 폼이 문제는 없는지.. 또 에러 메세지는

무시해도 상관 없는지좀 알려주세요..



5  COMMENTS
  • Profile
    전상욱 2001.04.04 06:05
    웃기는건.. 이렇게 해서 인자를 넘겨두.. 잘 돌아가긴 하네여..

    클래스 포인터를 잃어버리는 것두 없구..



    사실 이렇게 시도하게된 이유는여..



    전역변수로 잡혀있는 내 리스트 변수를

    다시 하나의 폼 또는 클래스에 넣구

    그걸 다시 클래스로 구성해야하는 어처구니 없는 일이 벌어져서..



    전부 수정을 하자니.. 시간이 없구..

    얼핏 생각난게 일단 최 상위클래스에다 전역변수를 옮기구나서

    그걸 참조하는 하위폼들이 그 변수를 참조하려면

    생성할때 미리 옮겨주는 수 밖에 없을거라 생각되서..



    심한 문제는 생성되는 모든 폼은 다중으로 연결되어서

    상위 클래스에 속해야만 하는 슬픈 사연이랍니다..



    뭔말인지~ 나두 헛갈린당~



    일단 이대루 납품해보구.. 며칠이따가 문제 생기믄 대책을 찾아보져..ㅋㅋ

    이 워닝이 어떤 결과를 나을지는 어딜 찾아봐두 안나오네여.. 답답~~~



    그럼 즐프~~





    전상욱 wrote:

    > * 사용환경 : 델파이5 / Windows2000

    > * 에러 메시지 :

    > Mothod "Create" hides virtual method of base type "TCustomForm"

    >

    > 일반적으로 TForm1.Create는 TComponent를 인자로 받게 되어 있다는건 알고 있습니다.

    > 그런데 여기에 초기화해야할 변수가 있어서 constructor Create를 다시 선언한 후

    > 해당 생성자를 다시 상속자에게 돌려주도록 했는데 에러 메세지가 뜨네여..

    >

    > 즉..

    > ...(생략)

    > public

    > constructor Create (AOwner: TComponent; myVar: Itneger); <<< 요기가 에러~

    >

    > ...(중략)

    >

    > constructor TForm1.Create (AOwner: TComponent; myVar: Itneger);

    > begin

    > myLocalVar := myVar;

    > inherited Create(AWoner);

    > end;

    >

    > 이렇게 해서 생성한 폼이 문제는 없는지.. 또 에러 메세지는

    > 무시해도 상관 없는지좀 알려주세요..

    >

  • Profile
    하얀까마귀 2001.04.04 08:50
    안녕하세요...



    음.. 그렇게 하셔도 작동은 잘 될것 같네요.



    원하시는 동작도 잘될것 같구요..



    그런데 myVar <-- 요넘이 전역변수라면 굳이 파라메터로 넘기지 않아도



    상관없는것 아닌가요??



    음.. 제가 프로젝트를 잘 몰라서 하는말 같네요.. ^_^



    그럼.. 즐거운시간 되세요..



    전상욱 wrote:

    > 웃기는건.. 이렇게 해서 인자를 넘겨두.. 잘 돌아가긴 하네여..

    > 클래스 포인터를 잃어버리는 것두 없구..

    >

    > 사실 이렇게 시도하게된 이유는여..

    >

    > 전역변수로 잡혀있는 내 리스트 변수를

    > 다시 하나의 폼 또는 클래스에 넣구

    > 그걸 다시 클래스로 구성해야하는 어처구니 없는 일이 벌어져서..

    >

    > 전부 수정을 하자니.. 시간이 없구..

    > 얼핏 생각난게 일단 최 상위클래스에다 전역변수를 옮기구나서

    > 그걸 참조하는 하위폼들이 그 변수를 참조하려면

    > 생성할때 미리 옮겨주는 수 밖에 없을거라 생각되서..

    >

    > 심한 문제는 생성되는 모든 폼은 다중으로 연결되어서

    > 상위 클래스에 속해야만 하는 슬픈 사연이랍니다..

    >

    > 뭔말인지~ 나두 헛갈린당~

    >

    > 일단 이대루 납품해보구.. 며칠이따가 문제 생기믄 대책을 찾아보져..ㅋㅋ

    > 이 워닝이 어떤 결과를 나을지는 어딜 찾아봐두 안나오네여.. 답답~~~

    >

    > 그럼 즐프~~

    >

    >

    > 전상욱 wrote:

    > > * 사용환경 : 델파이5 / Windows2000

    > > * 에러 메시지 :

    > > Mothod "Create" hides virtual method of base type "TCustomForm"

    > >

    > > 일반적으로 TForm1.Create는 TComponent를 인자로 받게 되어 있다는건 알고 있습니다.

    > > 그런데 여기에 초기화해야할 변수가 있어서 constructor Create를 다시 선언한 후

    > > 해당 생성자를 다시 상속자에게 돌려주도록 했는데 에러 메세지가 뜨네여..

    > >

    > > 즉..

    > > ...(생략)

    > > public

    > > constructor Create (AOwner: TComponent; myVar: Itneger); <<< 요기가 에러~

    > >

    > > ...(중략)

    > >

    > > constructor TForm1.Create (AOwner: TComponent; myVar: Itneger);

    > > begin

    > > myLocalVar := myVar;

    > > inherited Create(AWoner);

    > > end;

    > >

    > > 이렇게 해서 생성한 폼이 문제는 없는지.. 또 에러 메세지는

    > > 무시해도 상관 없는지좀 알려주세요..

    > >

  • Profile
    하얀까마귀 2001.04.04 05:19
    안녕하세요 하얀까마귀 입니다.



    오버라이드 해야 하거든요...



    그래서 요렇게 하시면 됩니다.



    constructor Create (AOwner: TComponent; myVar: Itneger); override;



    전상욱 wrote:

    > * 사용환경 : 델파이5 / Windows2000

    > * 에러 메시지 :

    > Mothod "Create" hides virtual method of base type "TCustomForm"

    >

    > 일반적으로 TForm1.Create는 TComponent를 인자로 받게 되어 있다는건 알고 있습니다.

    > 그런데 여기에 초기화해야할 변수가 있어서 constructor Create를 다시 선언한 후

    > 해당 생성자를 다시 상속자에게 돌려주도록 했는데 에러 메세지가 뜨네여..

    >

    > 즉..

    > ...(생략)

    > public

    > constructor Create (AOwner: TComponent; myVar: Itneger); <<< 요기가 에러~

    >

    > ...(중략)

    >

    > constructor TForm1.Create (AOwner: TComponent; myVar: Itneger);

    > begin

    > myLocalVar := myVar;

    > inherited Create(AWoner);

    > end;

    >

    > 이렇게 해서 생성한 폼이 문제는 없는지.. 또 에러 메세지는

    > 무시해도 상관 없는지좀 알려주세요..

    >

  • Profile
    전상욱 2001.04.04 05:38
    하.. 안녕하세여.. 까마귀님..



    물론 그거까지 해봤는데여.

    오버라이딩하면.. 타입이 틀리다구.. 에러가 나여..

    워닝인 상태에서는 실행은 되는디..

    에러는.. 안돼니까.. 어케해야할지 모르겠네여..



    하얀까마귀 wrote:

    > 안녕하세요 하얀까마귀 입니다.

    >

    > 오버라이드 해야 하거든요...

    >

    > 그래서 요렇게 하시면 됩니다.

    >

    > constructor Create (AOwner: TComponent; myVar: Itneger); override;

    >

    > 전상욱 wrote:

    > > * 사용환경 : 델파이5 / Windows2000

    > > * 에러 메시지 :

    > > Mothod "Create" hides virtual method of base type "TCustomForm"

    > >

    > > 일반적으로 TForm1.Create는 TComponent를 인자로 받게 되어 있다는건 알고 있습니다.

    > > 그런데 여기에 초기화해야할 변수가 있어서 constructor Create를 다시 선언한 후

    > > 해당 생성자를 다시 상속자에게 돌려주도록 했는데 에러 메세지가 뜨네여..

    > >

    > > 즉..

    > > ...(생략)

    > > public

    > > constructor Create (AOwner: TComponent; myVar: Itneger); <<< 요기가 에러~

    > >

    > > ...(중략)

    > >

    > > constructor TForm1.Create (AOwner: TComponent; myVar: Itneger);

    > > begin

    > > myLocalVar := myVar;

    > > inherited Create(AWoner);

    > > end;

    > >

    > > 이렇게 해서 생성한 폼이 문제는 없는지.. 또 에러 메세지는

    > > 무시해도 상관 없는지좀 알려주세요..

    > >

  • Profile
    하얀까마귀 2001.04.04 05:56
    이런... 죄송합니다..



    constructor TForm1.Create (AOwner: TComponent; myVar: Itneger);



    이건 안됩니다. 말씀대로 타입이 틀리다고 나오겠죠...



    생성자는 부모클래스에서 정의되어 있으니까 그 함수 형태를 변경시킬수

    없습니다. 같아야만 하거든요..



    변수를 왜 넘겨야 하는지는 모르겠지만. 다른방법으로 하셔야 될것 같은데..



    그럼... 즐거운시간 되세요..





    전상욱 wrote:

    > 하.. 안녕하세여.. 까마귀님..

    >

    > 물론 그거까지 해봤는데여.

    > 오버라이딩하면.. 타입이 틀리다구.. 에러가 나여..

    > 워닝인 상태에서는 실행은 되는디..

    > 에러는.. 안돼니까.. 어케해야할지 모르겠네여..

    >

    > 하얀까마귀 wrote:

    > > 안녕하세요 하얀까마귀 입니다.

    > >

    > > 오버라이드 해야 하거든요...

    > >

    > > 그래서 요렇게 하시면 됩니다.

    > >

    > > constructor Create (AOwner: TComponent; myVar: Itneger); override;

    > >

    > > 전상욱 wrote:

    > > > * 사용환경 : 델파이5 / Windows2000

    > > > * 에러 메시지 :

    > > > Mothod "Create" hides virtual method of base type "TCustomForm"

    > > >

    > > > 일반적으로 TForm1.Create는 TComponent를 인자로 받게 되어 있다는건 알고 있습니다.

    > > > 그런데 여기에 초기화해야할 변수가 있어서 constructor Create를 다시 선언한 후

    > > > 해당 생성자를 다시 상속자에게 돌려주도록 했는데 에러 메세지가 뜨네여..

    > > >

    > > > 즉..

    > > > ...(생략)

    > > > public

    > > > constructor Create (AOwner: TComponent; myVar: Itneger); <<< 요기가 에러~

    > > >

    > > > ...(중략)

    > > >

    > > > begin

    > > > myLocalVar := myVar;

    > > > inherited Create(AWoner);

    > > > end;

    > > >

    > > > 이렇게 해서 생성한 폼이 문제는 없는지.. 또 에러 메세지는

    > > > 무시해도 상관 없는지좀 알려주세요..

    > > >