![]() |
Methoden-parameterliste zur laufzeit?
Moin *g*
Ich implementiere in meinem runtime objectInspector grade event-fähigkeiten, was auch kein problem ist, da es ja TObject.MethodAddress() gibt! Allerdings bekomme ich keine infos über die Erforderlichen Parameter. Bei prozeduralen typen kann man diese infos ja über die RTTi abgreifen (PTypeData.ParamList). Deshalb: Gibt es eine möglichkeit die Methoden-parameterliste dynamisch zu ermitteln? Sollte es nicht gehen sagt es bitte auch, denn dann denke ich mir ein workaround aus...danke schonmal! mfg. maximovsky |
Re: Methoden-parameterliste zur laufzeit?
Hallo maximov,
ein
Delphi-Quellcode:
geht ohne Debug-Informationen (dann auch nicht in dieser Form) leider nicht und ist auch einer der Gründe, warum bei diversen Skript-Engines die Signaturen zusammen mit der Adressen der in der Engine benutzbaren Methoden registriert werden müssen...
GetTypeData(Self.GetMethodAddress('Foo')))
Ausnahme bilden hier Lösungen, die "von Haus aus" eine solche Reflektion mitbringen müssen, wie zB Klassen, die das IDispatch Interface implementieren. An welchen Work-Around hast Du gedacht? |
Re: Methoden-parameterliste zur laufzeit?
Ein möglicher workaround wäre halt ein registrierung der methoden in assoziation mit dem prozeduralen-typ (of object) zu machen, der dann ja die parameterliste hält. Nur dann muss ich jede methode einzelnd registrieren und muss eine methoden-registry schreiben, die für jede klasse die einträge verwaltet (leider gibt es in D7 ja keine klassenfelder) :wall:
Oder habt ihr eine bessere idee? |
Re: Methoden-parameterliste zur laufzeit?
Zitat:
Bist du dir sicher, dass das so gehen kann? |
Re: Methoden-parameterliste zur laufzeit?
Hallo maximov
Zitat:
Zitat:
Wolltest Du eine Lösung mithilfe von Reflektionsklassen umsetzen (ähnlich der Lösung in Java), könntest Du beim Kompilieren die Struktur Deiner Klassen analysieren und eine Helper-Klasse generieren lassen, die sich dann bei Initialsierung der Unit bei einem Singelton registriert... |
Re: Methoden-parameterliste zur laufzeit?
Danke Choose!
Ich denke ich lass es lieber und registriere die methoden von hand :cry: ...bzw wenn keine registrierung vorliegt, lass ich das event ungeprüft zuweisen *eins.zwei.risiko* |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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