Ik heb een class met daarin een TObjectlist om van alles in te stoppen.
Wat er in gaat implementeerd wel allemaal dezelfde interface.
Als ik nu een object uit de list trek krijg ik hem niet meer gekast naar de interface en kan ik er dus ook geen methoden op aanroepen. Wat doe ik fout?
De definitie van de observer classes en interfaces.
En de code van de observable.
Deze code roept bij elk object in de TObjectList de methode writeLog aan.
Dit werkt dus niet omdat tempObserver een TObject is en de methode writelog niet kent.
Als tempObserver als ILogObserver declareer krijg ik hem niet uit de TObjectList omdat TObject != ILogObserver.
Wat er in gaat implementeerd wel allemaal dezelfde interface.
Als ik nu een object uit de list trek krijg ik hem niet meer gekast naar de interface en kan ik er dus ook geen methoden op aanroepen. Wat doe ik fout?
De definitie van de observer classes en interfaces.
code:
1
2
3
| ILogObserver = interface TFileLogObserver = class(TInterfacedObject, ILogObserver) TMemoFieldLogObserver = class(TInterfacedObject, ILogObserver) |
En de code van de observable.
Deze code roept bij elk object in de TObjectList de methode writeLog aan.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| currentObservers : TObjectList;
procedure TLogObservableAdapter.writeLog(logMessage: TLogMessage);
var
i, aantal: integer;
tempObserver: TObject;
begin
aantal := currentObservers.Count;
for i := 0 to aantal - 1 do
begin
tempObserver := currentObservers.items[i];
tempObserver.writeLog(logMessage);
end;
end; |
Dit werkt dus niet omdat tempObserver een TObject is en de methode writelog niet kent.
Als tempObserver als ILogObserver declareer krijg ik hem niet uit de TObjectList omdat TObject != ILogObserver.