Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2009, 11:00   #1
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию abstract methods

Столкнулся с проблемой. Написал класс-наследник от TForm в котором присутствуют абстрактные методы. Так вот, хочу сделать чтобы при наследовании от моего класса на этапе компиляции выводитлись Hint, в случае если абстрактный метод не объявлен. С выводом Hint'ов понятно, а как проверить объявлен ли абстрактный метод
NieL вне форума Ответить с цитированием
Старый 09.01.2009, 11:39   #2
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Если я правильно понял, то компилятор предупредит тебя о наличии неперекрытых методов в наследнике при попытке создать его экземпляр
Цитата:
ChildrForm := TChildrForm.Create(Self);
primer.zip
s.Creator вне форума Ответить с цитированием
Старый 09.01.2009, 11:47   #3
DelDev
Пользователь
 
Аватар для DelDev
 
Регистрация: 09.01.2009
Сообщений: 24
По умолчанию

Так ведь и так компилятор выдает Warning если не перекрыт абстрактный метод?
Код:
type
  TNewForm = class(TObject)
  public
    procedure SomeAbstract; virtual; abstract;
  end;

  TNextForm = class(TNewForm)

  end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  with TNextForm.Create do
    SomeAbstract
end;
Код:
[DCC Warning] Unit2.pas(36): W1020 Constructing instance of 'TNextForm' containing abstract method 'TNewForm.SomeAbstract'
А при попытке его вызова выскакивает исключение.
DelDev вне форума Ответить с цитированием
Старый 09.01.2009, 11:58   #4
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию

Все вопрос решился сам по себе. Спасибо. Тему можно закрывать
NieL вне форума Ответить с цитированием
Старый 09.01.2009, 12:02   #5
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от DelDev Посмотреть сообщение
Так ведь и так компилятор выдает Warning если не перекрыт абстрактный метод?
Я про то и говорю, что компилятор ругается при попытке создать объект
Код:
TNextForm.Create
А ошибка времени выполнения при попытке выполнения абстрактного метода
Код:
SomeAbstract
Но если убрать
Код:
  with TNextForm.Create do
    SomeAbstract
то ошибок выдаваться не будет.
s.Creator вне форума Ответить с цитированием
Старый 09.01.2009, 12:21   #6
DelDev
Пользователь
 
Аватар для DelDev
 
Регистрация: 09.01.2009
Сообщений: 24
По умолчанию

s.Creator,
Опередил мой ответ, потому и говорим об одном.

Это понятно все, я этот код для примера набросал, чтоб показать что, где и как ругается.
DelDev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Form1.Free; Abstract Error Манжосов Денис :) Общие вопросы Delphi 3 21.08.2008 15:46