Wenn Sie einen Schnittstellenzeiger in Delphi Evaluate/Modify
Pop-up (Strg-F7) inspizieren es wird sagen so etwas wie dieses:Delphi-Debugger-Funktionen mit Schnittstellenzeiger
Pointer ($ 656E84) als IConnectionPoint
Meine Frage ist, wo bekommt der Debugger den "as IConnectionPoint" oder was auch immer von,
a) Wie weiß es, welche Art von Schnittstelle der Zeiger referenziert; und
b) Woher (und durch welchen Prozess) erhält der Debugger den Text seiner Beschreibung, z. IConnectionPoint
?
Ich fragte mich, ob der Debugger diese Dinge verwaltet, indem er irgendwie die Schnittstelle abfragt, die der Zeiger hält. Aber, IInterface
(was ist, was der Debugger meldet eine IUnknown
als) hat nur QueryInterface
, _AddRef
und _Release methods
und ich kann nicht sehen, wie die Informationen von jedem von denen erhalten werden konnte. Genauso kann ich nicht sehen, wie der Debugger die Informationen aus dem "history" des Zeigers ableiten könnte, weil das Objekt, auf das verwiesen wird, nicht erst in der Delphi-App erstellt worden sein muss.
Ist es nicht so einfach wie der Debugger die Variable zu wissen, wird deklarierten Typ X zu haben und zu wissen, es hat einen Wert Y, so „Pointer (Y) als X“ angezeigt wird? –
Können Sie den Code veröffentlichen, der den Schnittstellenzeiger deklariert, der Ihnen das beobachtete Verhalten bietet? Ich vermute (genau wie @Rob), dass der Debugger einfach von den kompilierten Symbolen wissen kann, wie die Variable deklariert wurde. –