AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Debug Visualizers für Interfaces?

Ein Thema von Mavarik · begonnen am 20. Mai 2017 · letzter Beitrag vom 21. Mai 2017
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Debug Visualizers für Interfaces?

  Alt 21. Mai 2017, 14:18
Das sind doch Delphi-Interfaces?

Nja, der Visualizer für Öbjekte ist zwar auch nicht immer so optimal,
aber was pasiert, wenn du sowa wie CurThread.Evaluate(Expression+' as TObject') versuchst?
ok... Das Ergebnis wäre jedenfalls kein String...

hmm dann mit ResultAddr und casten? Ich dachte man kommt nicht an den Speicherbereich?

Delphi-Quellcode:
var
  Instance : TFoo absolute ResultAddr;
Sowas? Muss ich testen
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Debug Visualizers für Interfaces?

  Alt 21. Mai 2017, 14:44
Ich dachte man kommt nicht an den Speicherbereich?
An den Speicherbereich zum Objekt, das vom Interface gekapselt wird? Hatte irgendwo in einem Thread auf Stackoverflow mal gelesen, dass die einzig saubere Methode wohl das Implementieren einer Methode/Property function GetObject: TObject ist, welche in der konkreten Implementation des Interfaces dann Self zurückgibt. Mal schauen, ob ich den Thread noch irgendwie finde; dort stand glaube ich auch beschrieben, was die Problematik bei normalen Casts war.

Edit:
http://stackoverflow.com/questions/4...ject-in-delphi

Ist allerdings auch schon ein älterer Thread, kann sein, dass sich da mitlerweile was geändert hat.

Edit 2:
Ab D2010 kannst du scheinbar auch den as Operator verwenden (vermutlich aber weniger performant).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (21. Mai 2017 um 14:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Debug Visualizers für Interfaces?

  Alt 21. Mai 2017, 14:57
An den Speicherbereich zum Objekt, das vom Interface gekapselt wird? Hatte irgendwo in einem Thread auf Stackoverflow mal gelesen, dass die einzig saubere Methode wohl das Implementieren einer Methode/Property function GetObject: TObject ist, welche in der konkreten Implementation des Interfaces dann Self zurückgibt. Mal schauen, ob ich den Thread noch irgendwie finde; dort stand glaube ich auch beschrieben, was die Problematik bei normalen Casts war.

Edit 2:
Ab D2010 kannst du scheinbar auch den as Operator verwenden (vermutlich aber weniger performant).
(Edit2) as soll weniger performant sein? OK...

Ich erkenne gerade den Nachteil meiner Idee... Falls das funktioniert. Ich muss dann ja wenigstens eine Implementation des Interfaces mit kompilieren.
ggf. hat das ungewollte Effekte... Abgesehen vom "Rattenschwanz" was noch automatisch mit kommen würde. e.g.

- Logging
- Multilinguale Exceptions
- Factory's
- uvm...

Generische Interfaces würden sowieso dann rausfallen...

Ich muss das erstmal alles gegeneinander abwägen. (Und testen)


Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Debug Visualizers für Interfaces?

  Alt 21. Mai 2017, 15:18
(Edit2) as soll weniger performant sein? OK...
Jaa, die erste Variante ist ein einfacher Methodenaufruf, während an as noch ein ganzer Rattenschwanz anhängt:
Zitat:
This as operator use a special hidden interface GUID (ObjCastGUID ) to retrieve the object instance, calling an enhanced version of TObject.GetInterface
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz