OK, ich hab den Übeltäter jetzt eingekreist. Es handelt sich definitiv um die ObserverUpdate-Methode wenn ich folgenden Code
Delphi-Quellcode:
procedure TDigitalClock.ObserverUpdate(const Observable: IUnknown);
var
Obj: IClockTimer;
begin
Observable.QueryInterface(IClockTimer, Obj);
if Assigned(Obj) then
begin
Caption:= FormatDateTime('tt', obj.GetTime);
end;
end;
durch diesen ersetze
Delphi-Quellcode:
procedure TDigitalClock.ObserverUpdate(const Observable: IUnknown);
var
Obj: IClockTimer;
begin
//Observable.QueryInterface(IClockTimer, Obj);
//if Assigned(Obj) then
//begin
Caption:= FormatDateTime('tt', Now);
//end;
end;
, dann tut alles. Kann mir jemand erklären, was in dieser Funktion vor sich geht?
Bisher habe ich 'QueryInterface' im Zusammenhang mit Schnittstellen noch nie gebraucht. Ist es so, dass ich damit das implementierende Objekt erzeugen kann ohne die Klasse zu kennen? Dann müsste doch in dem Moment, in dem QueryInterface ausgeführt wird auch das Create von TClockTimer ausgeführt werden. Dem scheint aber nicht so zu sein.
Ich wäre für etwas Nachhilfe dankbar.
Ciao
Ciao
This is a signature virus. Copy me to help me spread!