AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi TRTTIMethod.Invoke eines Interface ausführen

TRTTIMethod.Invoke eines Interface ausführen

Ein Thema von Friday · begonnen am 7. Nov 2022 · letzter Beitrag vom 10. Nov 2022
 
Friday

Registriert seit: 6. Mai 2008
106 Beiträge
 
Delphi 12 Athens
 
#1

TRTTIMethod.Invoke eines Interface ausführen

  Alt 7. Nov 2022, 20:26
Hallo,
bei Versuch einen Serializer zu schreiben, bleibe ich gerade bei den Interfaces stecken.
Der Serializer ist eine rekursive Funktion die ein TValue entgegen nimmt.
Übernommen aus diesem Thread: https://stackoverflow.com/questions/...14088#11514088
Allerding ist der Interface Teil in dem sonst gut funktionierenden Beispiel leer.
Das habe ich folgend ergänzt. Es wird über alle Methoden die das Interface definiert iteriert und wenn eine Methode einen Rückgabewert <> nil (also Funktion) hat und keine Parameter erwartet, wird versucht die rekursive Funktion erneut aufzurufen mit dem Rückgabewert der aufzurufenden Funktion:
Code:
    tkInterface: // Identifies an interface type.
      begin
        sList.Add(FSumIndent + 'interface ' + name + ':' + thing.TypeInfo.name);
        IncIndent();
        for LMethod in LContext.GetType(thing.TypeInfo).GetMethods do
        begin
          if (LMethod.ReturnType <> nil) and (length(LMethod.GetParameters) = 0) then
            Serialize(LMethod.name, LMethod.Invoke(thing, []), sList); //<-- AV
        end;
        DecIndent();
        sList.Add(FSumIndent + 'end');
      end;
Dass ich hier bei "LMethod.Invoke(thing,.." eine AV bekomme ist nicht weiter verwunderlich, denn ich übergebe statt einer Instanz nur ein Interface.
Aber die Frage ist wie komme ich an das Objekt ran, dass hinter dem Interface steckt?
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:05 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