AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Liste aller Methoden eines Objects zur Laufzeit erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Liste aller Methoden eines Objects zur Laufzeit erstellen

Ein Thema von Oracle · begonnen am 26. Mai 2008 · letzter Beitrag vom 27. Mai 2008
Antwort Antwort
Oracle
(Gast)

n/a Beiträge
 
#1

Liste aller Methoden eines Objects zur Laufzeit erstellen

  Alt 26. Mai 2008, 12:25
Ich möchte mir zur Laufzeit eine Liste aller Methoden eines Objekts erstellen und diese in einer Listbox anzeigen lassen.
Gibt es eine Möglichkeit, an diese Informationen zur Laufzeit heranzukommen? Mir würde es auch reichen, wenn ich nur alle public Methoden herausbekäme.

Vielen Dank euch schonmal im Vorraus
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Liste aller Methoden eines Objects zur Laufzeit erstelle

  Alt 26. Mai 2008, 12:29
Wenn es dir ausreicht, alle published Methoden zu nehmen, dann ja.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Liste aller Methoden eines Objects zur Laufzeit erstelle

  Alt 26. Mai 2008, 12:37
Du kommst per RTTI nur an die Published Methoden ran.
Genauer gesagt, bekommst du einen untypisierten Zeiger auf die Methode(n).
Delphi-Quellcode:
var method:TMethod;
  method := GetMethodProp(obj, name_der_methode);
  if Assigned(method.Code) then
     s := TObject(method.Data).ClassName+'.'+TObject(method.Data).MethodName(method.Code)
Wenn du die Signatur der Methode nicht kennst, kannst du sie nicht aufrufen.
Andreas
  Mit Zitat antworten Zitat
Oracle
(Gast)

n/a Beiträge
 
#4

Re: Liste aller Methoden eines Objects zur Laufzeit erstelle

  Alt 26. Mai 2008, 12:53
was übergebe ich denn in der Zeile:

method := GetMethodProp(obj, name_der_methode); in der Variable "name der Methode"?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Liste aller Methoden eines Objects zur Laufzeit erstelle

  Alt 26. Mai 2008, 12:58
Weis nicht, ob es dafür bereits eine Funktion gibt.
Delphi-Quellcode:
procedure getMethodList(aClass:TClass; const List:TStrings);
Type PMethodEntry=^TMethodEntry;
     TMethodEntry=packed record
       size:Word;
       Adr:pointer;
       Name:Shortstring;
     end;
var mTable:ppointer;
    ClassName:String;
    MethodCount:PWord;
    MethodEntry:PMethodEntry;
    i:integer;
begin
  while aClass<>nil do
  begin
    mTable:=pointer(integer(aClass)+vmtMethodTable);
    if (mTable<>nil)and(mTable^<>nil) then
    begin
      MethodCount:=mTable^;
      MethodEntry:=pointer(integer(MethodCount)+2);
      ClassName:=aClass.ClassName;
      for i:=1 to MethodCount^ do
      begin
        List.add(aClass.ClassName+'.'+MethodEntry^.Name);
        MethodEntry:=pointer(integer(MethodEntry)+MethodEntry^.size);
      end;
    end;
    aClass:=aClass.ClassParent;
  end;
end;
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Oracle
(Gast)

n/a Beiträge
 
#6

Re: Liste aller Methoden eines Objects zur Laufzeit erstelle

  Alt 26. Mai 2008, 15:40
super!! Danke Sirius deine Variante funktioniert auf Anhieb.
Nun noch eine Frage, bekommt man zusätzlich auch die Signatur heraus?
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Liste aller Methoden eines Objects zur Laufzeit erstelle

  Alt 26. Mai 2008, 16:27
Hi,

bei Hallvard Vassbotn findet man einen Blog-Eintrag zu Extended Class RTTI.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Liste aller Methoden eines Objects zur Laufzeit erstelle

  Alt 26. Mai 2008, 17:41
Mir war doch so, dass ich das schon mal geschrieben hatte.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Oracle
(Gast)

n/a Beiträge
 
#9

Re: Liste aller Methoden eines Objects zur Laufzeit erstelle

  Alt 27. Mai 2008, 10:28
Das war der entscheidene Tip. Jetzt läufts. Dankeschön
  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 11:33 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