![]() |
Überwachte Ausdrücke optimieren?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich nutze folgendes Interface:
Delphi-Quellcode:
In den überwachten Ausdrücken wird nur der Klassenname und die Speicheradresse angegeben.
IsoGuid = interface
... property TS1: TDateTime read _get_TS1 write _set_TS1; property TS2: TDateTime read _get_TS2 write _set_TS2; property C: LongWord read _get_C write _set_C; property AsString: String read get_AsString write set_AsString; end; Man kann auch keine Members aufklappen. Gibt es vielleicht eine Möglichkeit, die Darstellung für mein Interface in den überwachten Ausdrucken zu optimieren? Mich würden regelmäßig bestimmte Werte interessieren (oder zumindest einer). Es wäre cool, wenn man so eine Art Template definieren oder Attribute festlegen könnte, um die gewünschte Darstellung zu erreichen (ohne das ständig neu schreiben zu müssen). |
AW: Überwachte Ausdrücke optimieren?
Du kannst Dir mit der ToolsAPI einen eigenen Viewer bauen...
Mavarik |
AW: Überwachte Ausdrücke optimieren?
|
AW: Überwachte Ausdrücke optimieren?
Danke für die Info.
Ich habe mir das gestern mal angesehen. Aber irgendwie ist Erstellung eigener Visualizer nur halb erklärt. ![]() ![]() Einige vollständigere Beispiele gibt es im Netz jedoch. Z.B. hier: ![]() Mir ist allerdings grundsätzlich unklar, ob man diese überhaupt für Interfaces realisieren kann. Was müsste man denn als Typ angeben, damit der passende Visualizer benutzt wird? "TMyGuid($2F31204) as IMyGuid" geht ja nicht. Weiß jemand zufällig, ob/wie man das für Interfaces/Klassen lösen kann? |
AW: Überwachte Ausdrücke optimieren?
Im Notfall kannst du vermutlich IInterface als Typ verwenden können und machst dann intern ein
Delphi-Quellcode:
.
if Supports
Wenn das trifft, dann deine Anzeige und sonst bildest du die Default-Anzeige nach, falls du den Original-Visualizer nicht aufrufen kannst. |
AW: Überwachte Ausdrücke optimieren?
Zitat:
![]() die mitgelieferten Visualizer angeschaut hättest, wüsstest du, dass die unterstützten Types über ihren TypeName angegeben werden. ;) |
AW: Überwachte Ausdrücke optimieren?
Da habe ich (mit wenig Zeit) natürlich versucht, aber mir fällt das etwas schwerer als Dir und die mitgelieferten Beispiele hatte ich nicht gefunden.
Ich bin jetzt aber etwas weiter. Aus dem String "TsoGuid($2F21204) as IsoGuid" extrahiere ich zunächst den Pointer um dort das Interface abzuholen. Ich weiß nicht, ob der Pointer auf das Objekt oder das Interface verweist. Beide versuchten Casts funktionieren jedoch nicht. Debugging ist etwas schwierig, da das ja zur Designtime läuft. Hier mal ein Auszug (auf Grund der Versuche etwas chaotisch).
Delphi-Quellcode:
Kann mir jemand nochmal einen Tipp zu dem korrekten Cast geben?
var
P: Integer; S, SR: string; Adr: Integer; lGuid: IsoGuid; tmpGuid: TsoGuid; O: TObject; CodeSite.Send(Expression + ' - ' + TypeName + ' - ' + EvalResult); // AUSGABE: Guid - IsoGuid - TsoGuid($2F21204) as IsoGuid if (TypeName = 'IsoGuid') then begin Result := 'IsoGuid! => ' + EvalResult; SR := EvalResult; P := Pos('(', SR); S := Copy(SR, 1, P - 1); SR := Copy(SR, P + 1); if (S = 'TsoGuid') then begin P := Pos(')', SR); S := Copy(SR, 1, P - 1); SR := Copy(SR, P + 1); Adr := StrToInt(S); if (SR = ' as IsoGuid') then begin // O := TObject(Adr); // tmpGuid := TsoGuid(Adr); // if Supports(tmpGuid, IsoGuid, lGuid) then // Result := '---> IsoGuid' // else // Result := ':-( ' + IntToHex(Adr, 8) + ' - ' + EvalResult; // Result := ':-( ' + O.ClassName; Result := IsoGuid(Adr).AsString; end; end; Exit; end; Falls ich zum Ziel komme fasse ich das dann gern für Interessenten hier zusammen. |
AW: Überwachte Ausdrücke optimieren?
Du brauchst nix casten. Benutz die OTA. Wie das geht kannst du in den mitgelieferten Visualizers für z.B. TStrings sehen.
Kann man fast 1 zu 1 kopieren. |
AW: Überwachte Ausdrücke optimieren?
Warum nicht einfach in den überwachten Ausdrücken das schreiben:
TsoGuid(Guid), wobei Guid deine Interface-Instanz ist. Ist zwar so hart hingecastet, aber zum schnellen Debuggen, um die Werte der Member-Variablen zu prüfen reicht es doch?!? |
AW: Überwachte Ausdrücke optimieren?
@Stevie
Vielen Dank. Schaue ich mir heute Abend an. @TiGü Die Guid verwende ich andauernd in meinem Projekt. Da ist es hilfreich, wenn die IDE den Inhalt automatisch korrekt anzeigt. Scheint ja auch so, dass es lösbar ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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