function TTest.GetX: String; begin Result := FX; end;
Wie kann ich die Properties dieses interfaces am leichtesten anschauen??? Ich hätte gerne eine Darstellung wie die Objektvariable. Das Property im Watch-Window manuell eingeben ist auch lästig, besonders wenn das interface 10 properties hat...
Auf die Beantwortung dieser Frage war ein Kopfgeld in Höhe von 100 Reputationspunkten ausgesetzt.
Das Kopfgeld wurde bereits vergeben.
1 Antwort
0
sooooo, nach nem halben Jahr hab ich ne (nicht ganz so bequeme) Möglichkeit gefunden!
Das Problem ist, dass die Funktion zum casten von Interface => Klasse vom Linker entfernt wird, wenn das nirgends im Code gemacht wird.
Daher brauchen wir erst mal ne kleine Dummy-Funktion die das macht.
Man muss die Funktion aber irgendwo aufrufen, ansonsten wird diese natürlich wieder vom Linker entfernt. Eine passende Stelle wäre z.B. FormCreate des Hauptformulars.
Im Debugger kann man dann bei den Überwachten Ausdrücken den cast eingeben (z.B. "TTest(interface_pointer)") und sieht dann die Elemente der darunterliegenden Klasse.
procedure CallIntfCast; var i: ITest; t: TTest; begin t := TTest.Create; i := t;
// sicherheitshalber was mit den Variablen machen, // nicht dass der Optimizer die gesamte Funktion "wegoptimiert" if TTest(i) <> t then raise Exception.Create('WTF?'); end;