Форум: "Основная";
Текущий архив: 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