AGB  ·  Datenschutz  ·  Impressum  







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

Methoden-parameterliste zur laufzeit?

Ein Thema von maximov · begonnen am 29. Jan 2004 · letzter Beitrag vom 30. Jan 2004
Antwort Antwort
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#1

Methoden-parameterliste zur laufzeit?

  Alt 29. Jan 2004, 10:58
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
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Methoden-parameterliste zur laufzeit?

  Alt 29. Jan 2004, 11:07
Hallo maximov,

ein
GetTypeData(Self.GetMethodAddress('Foo'))) 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...
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?
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Methoden-parameterliste zur laufzeit?

  Alt 29. Jan 2004, 11:33
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)

Oder habt ihr eine bessere idee?
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Methoden-parameterliste zur laufzeit?

  Alt 29. Jan 2004, 12:10
Zitat von choose:
Hallo maximov,

ein
GetTypeData(Self.GetMethodAddress('Foo'))) geht ohne Debug-Informationen (dann auch nicht in dieser Form) leider nicht ...
DebugInfos wären ja nicht so schlimm, da ich sie nur in meinem editor brauche, aber ich hab das mal getestet und kam nur salat bei raus. self.methodAddress liefert ja auch kein PTypeInfo deshalb muss es vermutlich schief gehen.

Bist du dir sicher, dass das so gehen kann?
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Methoden-parameterliste zur laufzeit?

  Alt 30. Jan 2004, 09:51
Hallo maximov
Zitat von maximov:
Zitat von choose:
GetTypeData(Self.GetMethodAddress('Foo'))) geht ohne Debug-Informationen (dann auch nicht in dieser Form) leider nicht ...
[..]ich hab das mal getestet und kam nur salat bei raus
ich meinte mit meiner Äußerung (insbesondere mit dem Zusatz in den Klammern)
Zitat von choose:
ein ~ geht ohne Debug-Informationen (dann auch nicht in dieser Form) leider nicht
dass
  1. keine RTTI zur Signatur von Funktionen, Records, Methoden, etc. erzeugt werden und
  2. selbst beim Compilieren mit Debug-Infos, bei der eine Map-Datei beim Kompilieren die entsprechenden Verknüpfungen bereit hält, diese Informationen nicht transparent (für den Programmierer ohne Unterschied zum drumherum) auf die RTTI-Funktionen gemappt werden
Sieh Dir mal die diversen Exception-Tracer auf dem Markt an, die auf den Debug-Informationen basieren, vielleicht kannst Du damit etwas erreichen.

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...
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Methoden-parameterliste zur laufzeit?

  Alt 30. Jan 2004, 16:11
Danke Choose!

Ich denke ich lass es lieber und registriere die methoden von hand ...bzw wenn keine registrierung vorliegt, lass ich das event ungeprüft zuweisen *eins.zwei.risiko*
mâxîmôv.

{KDT}
  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 03:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz