Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];

Вниз

Как проверить имеет ли порожденный объект переопределенный метод?   Найти похожие ветки 

 
reonid   (2002-03-26 13:42) [9]

По адресам заглушек никак не проверишь, поддерживается этот метод или нет.

Если делать заглушки, то возможен следующий подход:

ESuppported = class(EAbort) end;
ENotSuppported = class(EAbort) end;

var
SupportTestMode: Boolean = False;

procedure Support(MethodSupported: Boolean);
begin
if SupportTestMode then if MethodSupported then
raise ESupport.Create else raise ENotSupport.Create;
end;

В НАЧАЛЕ каждого методе вызывать Support(True) или
Support(False) (False - для заглушек)
В режиме тестирования это предотвратит выполнение основного тела метода.

и соответственно проверка, поддерживается ли данный метод

function Supported(Meth: TNotifyEvent{для примера});
begin
SupportTestMode := True;// Включён режим проверки
try
try
Meth(nil); // значимый код метода НЕ будет выполнен
// сюда не должны попасть
raise Exception.Create("В методе забыли вызвать Support");
except
on ESupported do Result := True;
on ENotSupported do Result := False;
end;
finally
SupportTestMode := False;
end;
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.006 c
3-22568
UncleRu
2002-03-06 18:06
2002.04.08
Всё тот же кэш.


1-22738
Moscower
2002-03-26 19:57
2002.04.08
Соединение с удаленной базой данных


1-22673
DimaP
2002-03-28 15:58
2002.04.08
StringGrid


14-22834
Stan4Ever
2002-02-27 22:43
2002.04.08
Где можно скачатъ английские MP3 Files?


1-22763
koks
2002-03-27 09:59
2002.04.08
Ламерский вопрос - но в хелпе ничего нет нашел.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский