Warning: Method 'Create' hides virtual method of base type
От: Аноним  
Дата: 26.10.05 08:24
Оценка:
Warning: Method 'Create' hides virtual method of base type 'TLogMsg'
что означает?
и как от него избавиться?
Re: Warning: Method 'Create' hides virtual method of base ty
От: Alex.Che  
Дата: 26.10.05 08:27
Оценка:
Привет, "человек без имени"!
Вы пишешь 26 октября 2005:

> Warning: Method 'Create' hides virtual method of base type 'TLogMsg'

> что означает?
> и как от него избавиться?

Читай про перекрытие виртуальных методов.
Волшебное слово override.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 1.9
Re[2]: Warning: Method 'Create' hides virtual method of base
От: Аноним  
Дата: 26.10.05 08:44
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>Читай про перекрытие виртуальных методов.

AC>Волшебное слово override.

Спасибо.

помогла директива overload
тк метод от которого наследовалось был моим.

а вот как с формой поступать?
мне нужно изменить конструктор...
и передавать в него др параметры

overload не поставить
override не помогает

или я чего не понимаю
(оч вероятно => Помогите)
Re[3]: Warning: Method 'Create' hides virtual method of base
От: Alex.Che  
Дата: 26.10.05 08:50
Оценка:
Привет, "человек без имени"!
Вы пишешь 26 октября 2005:

AC>> Читай про перекрытие виртуальных методов.

AC>> Волшебное слово override.

> помогла директива overload

> тк метод от которого наследовалось был моим.

override и overload — две большие разницы. (С)

> а вот как с формой поступать?

> мне нужно изменить конструктор...
> и передавать в него др параметры

> overload не поставить

> override не помогает

> или я чего не понимаю

> (оч вероятно => Помогите)

Купи книжечку по Delphi.
Научиться программировать "методом тыка", маловероятно.
Нужно хоть азы прочесть.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 1.9
Re[4]: Warning: Method 'Create' hides virtual method of base
От: Аноним  
Дата: 26.10.05 08:58
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>Купи книжечку по Delphi.

AC>Научиться программировать "методом тыка", маловероятно.
AC>Нужно хоть азы прочесть.

учить легко
а помочь слабо?

( ну нет возможности сею секунду бежать за книжечкой в магаз )
Re[5]: Warning: Method 'Create' hides virtual method of base
От: Alex.Che  
Дата: 26.10.05 09:04
Оценка:
Привет, "человек без имени"!
Вы пишешь 26 октября 2005:

AC>> Купи книжечку по Delphi.

AC>> Научиться программировать "методом тыка", маловероятно.
AC>> Нужно хоть азы прочесть.

> учить легко

> а помочь слабо?

Не слабО, но рассказывать азбуку, это уж слишком.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 1.9
Re[5]: Warning: Method 'Create' hides virtual method of base
От: DarkMaster Украина http://www.bdslib.at.ua
Дата: 26.10.05 09:04
Оценка:
Здравствуйте, Аноним, Вы писали:

AC>>Купи книжечку по Delphi.

AC>>Научиться программировать "методом тыка", маловероятно.
AC>>Нужно хоть азы прочесть.

А>учить легко

А>а помочь слабо?

Опс... RTFM однако... Если метод у тебя свой — сделай-ка ты его в самом начале virtual, а уж потом будь добр наследуйся сколько угодно с заменой virtual на override и будет тебе счастье.

А>( ну нет возможности сею секунду бежать за книжечкой в магаз )


А вот без книжки счастья еще долго не будет
WBR, Dmitry Beloshistov AKA [-=BDS=-]
Re[6]: Warning: Method 'Create' hides virtual method of base
От: Аноним  
Дата: 26.10.05 09:08
Оценка:
Здравствуйте, DarkMaster, Вы писали:


DM>Опс... RTFM однако... Если метод у тебя свой — сделай-ка ты его в самом начале virtual, а уж потом будь добр наследуйся сколько угодно с заменой virtual на override и будет тебе счастье.


тык мне надо конструктор стандартной формы переделать
это НЕ свой метод...
Re[3]: Warning: Method 'Create' hides virtual method of base
От: vlad_gri  
Дата: 26.10.05 09:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Alex.Che, Вы писали:


AC>>Читай про перекрытие виртуальных методов.

AC>>Волшебное слово override.

А>Спасибо.


А>помогла директива overload

А>тк метод от которого наследовалось был моим.

А>а вот как с формой поступать?

А>мне нужно изменить конструктор...
А>и передавать в него др параметры

А>overload не поставить

А>override не помогает

А>или я чего не понимаю

А>(оч вероятно => Помогите)

reintroduce
Re[4]: Warning: Method 'Create' hides virtual method of base
От: Alex.Che  
Дата: 26.10.05 09:33
Оценка:
Привет, vlad_gri!
Вы пишешь 26 октября 2005:

vg> reintroduce


Не видя кода?
Смело!

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 1.9
Re[5]: Warning: Method 'Create' hides virtual method of base
От: vlad_gri  
Дата: 26.10.05 09:40
Оценка:
Здравствуйте, Alex.Che, Вы писали:

AC>Привет, vlad_gri!

AC>Вы пишешь 26 октября 2005:

vg>> reintroduce


AC>Не видя кода?

AC>Смело!

AC>--

AC>With best regards, Alex Cherednichenko.


тык мне надо конструктор стандартной формы переделать

Re[6]: Warning: Method 'Create' hides virtual method of base
От: Leonid Troyanovsky  
Дата: 26.10.05 09:45
Оценка:
Здравствуйте, vlad_gri, Вы писали:

_>тык мне надо конструктор стандартной формы переделать


У стандартной (TForm ?) формы нет абстрактных методов.
--
С уважением, LVT
Re[7]: Warning: Method 'Create' hides virtual method of base
От: vlad_gri  
Дата: 26.10.05 09:49
Оценка: +1
Здравствуйте, Leonid Troyanovsky, Вы писали:

LT>Здравствуйте, vlad_gri, Вы писали:


_>>тык мне надо конструктор стандартной формы переделать


LT> У стандартной (TForm ?) формы нет абстрактных методов.


нет
Re[8]: Warning: Method 'Create' hides virtual method of base
От: dvoika  
Дата: 26.10.05 10:01
Оценка:
Здравствуйте, vlad_gri, Вы писали:

_>Здравствуйте, Leonid Troyanovsky, Вы писали:


LT>>Здравствуйте, vlad_gri, Вы писали:


_>>>тык мне надо конструктор стандартной формы переделать


LT>> У стандартной (TForm ?) формы нет абстрактных методов.


_>нет


а у TCustomForm есть
Re[9]: Warning: Method 'Create' hides virtual method of base
От: vlad_gri  
Дата: 26.10.05 10:05
Оценка:
Здравствуйте, dvoika, Вы писали:

D>Здравствуйте, vlad_gri, Вы писали:


_>>Здравствуйте, Leonid Troyanovsky, Вы писали:


LT>>>Здравствуйте, vlad_gri, Вы писали:


_>>>>тык мне надо конструктор стандартной формы переделать


LT>>> У стандартной (TForm ?) формы нет абстрактных методов.


_>>нет


D>а у TCustomForm есть


нет.
Каким образом наличие/отсутствие абстрактных методов влияет на директиву reintroduce?
Re[10]: Warning: Method 'Create' hides virtual method of bas
От: Leonid Troyanovsky  
Дата: 26.10.05 10:44
Оценка:
Здравствуйте, vlad_gri, Вы писали:

_>Каким образом наличие/отсутствие абстрактных методов влияет на директиву reintroduce?


Никаким.
Просто, в перекрытом (override) конструкторе можно смело вызвать inherited,
который и выполнит всю черновую работу.

За исключением, скажем таких вещей, которые требуют хендла окна,
скажем, ListBoxX.Add(..). Т.е., в этом случае перекрывают CreateWnd.
--
С уважением, LVT
Re[11]: Warning: Method 'Create' hides virtual method of bas
От: vlad_gri  
Дата: 26.10.05 10:52
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:

LT>Здравствуйте, vlad_gri, Вы писали:


_>>Каким образом наличие/отсутствие абстрактных методов влияет на директиву reintroduce?


LT> Никаким.

LT> Просто, в перекрытом (override) конструкторе можно смело вызвать inherited,
LT> который и выполнит всю черновую работу.

LT> За исключением, скажем таких вещей, которые требуют хендла окна,

LT> скажем, ListBoxX.Add(..). Т.е., в этом случае перекрывают CreateWnd.
Директива reintroduce не запрещает вызов inherited.
Re[12]: Warning: Method 'Create' hides virtual method of bas
От: Leonid Troyanovsky  
Дата: 26.10.05 10:57
Оценка:
Здравствуйте, vlad_gri, Вы писали:

_>Директива reintroduce не запрещает вызов inherited.


А она здесь нафиг не нужна.
Use reintroduce when you want to hide an inherited virtual method with a new one.
--
С уважением, LVT
Re[13]: Warning: Method 'Create' hides virtual method of bas
От: vlad_gri  
Дата: 26.10.05 11:04
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:

LT>Здравствуйте, vlad_gri, Вы писали:


_>>Директива reintroduce не запрещает вызов inherited.


LT> А она здесь нафиг не нужна.

LT> Use reintroduce when you want to hide an inherited virtual method with a new one.
Так в чем спор.
Re: Warning: Method 'Create' hides virtual method of base ty
От: icWasya  
Дата: 26.10.05 15:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Warning: Method 'Create' hides virtual method of base type 'TLogMsg'

А>что означает?
А>и как от него избавиться?

Короче, тут так —

Если Вы пишете свой собственный метод, и вызываете его только сами, то
1) если название и сигнатура совпадают с родительскими —
пишете ключевое слово reintroduce, например

   constructor Create; reintroduce;// просто подавление выдачи Warning


2) если совпадают названия а сигнатуры разные —
пишете ключевое слово overload, например

   constructor Create(AOwner:TComponent;CreateMode:Integer); overload;

тогда можно будет использовать оба варианта

3) а конструктор можно и назвать по другому, например
   constructor CreateWithParam(AOwner:TComponent;CreateMode:Integer);

Delphi допускает и такое

Но ежели Вы пишете компоненту — то будьте любезны соблюдать некоторые правила,
в частности конструкторы и деструкторы должны быть объявлены так
   constructor Create(AOwner:TComponent); override;
   destructor Destroy; override;

и не забывать вызывать родительские конструкторы и деструкторы, иначе среда не поймёт
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.