Форум: "Основная";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
ВнизСписок(TList) методов. Как вызвать метод? Найти похожие ветки
← →
Kolan © (2007-05-20 12:24) [0]Здравствуйте,
Есть тип:TAttachCallBack = procedure(Subject: TSettingsManager) of object;
Я же могу хранить список таких методов? — Вроде могу.
FObserverCallBacks: TList;
Как их помещать в список? — Вроде справился:procedure TSettingsManager.Attach(AObserverCallBack: TAttachCallBack);
begin
FObserverCallBacks.Add(@AObserverCallBack);
end;
А как теперь вызывать?procedure TSettingsManager.NotifyObservers;
var
I: Integer;
CurrentCalback: TAttachCallBack;
begin
for I := 0 to FObserverCallBacks.Count — 1 do
begin
CurrentCalback := TAttachCallBack(FObserverCallBacks[I]);
CurrentCalback(Self);
end;
end;
Получаю:[Pascal Fatal Error] KAcousticPressureConverterGlobalSettings.pas(63): F2084 Internal Error: C4989
Так как же правильно их вызывать?
← →
MBo © (2007-05-20 12:51) [1]>Я же могу хранить список таких методов? — Вроде могу.
Нет, прямо так - не можешь, поскольку метод объекта - 8 байт.
См. TMethod
сюда еще глянь:
http://delphimaster.net/view/2-1179297317/
← →
Kolan © (2007-05-20 13:28) [2]> См. TMethod
> сюда еще глянь:
Ясно. Получается нужно знать еще и TMyClass…
Опишу задачу, может подругому можно…
Мне нужен Observer, ноTConcreteObserver
должен реализовавыть интерфейсIObserver
.
То есть:TConcreteObserver = class(TInterfacedObject, IObserver)
А что делать если мне надо сделать Обозревателем такой класс:TLogManager = class(TFileStream)
Или такойTGraphManager = class
?
Вот я и решил что вAttach
передавать надо не объект а метод, может можно проще?
← →
Юрий Зотов © (2007-05-20 15:02) [3]А почему не сделать нормально - реазовать в TLogManager (или в его потомке) интерфейс IObserver?
← →
TStas © (2007-05-20 15:17) [4]x: CurrentCalback;
....
@x = TAttachCallBack(FObserverCallBacks[I]);
x(Self)
← →
Kolan © (2007-05-20 22:53) [5]> реазовать в TLogManager (или в его потомке) интерфейс IObserver?
А я незнаю как.TInterfacedObject
иTFileStream
— родители должны быть… а мн. наследования нет :)
Или вы предлогаете безTInterfacedObject
"а обойтись?
← →
Юрий Зотов © (2007-05-20 23:28) [6]> Kolan © (20.05.07 22:53) [5]
Наследоваться от TFileStream, а RefCount реализовать самому, по аналогии с TInterfacedObject.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c