Announcement

Collapse
No announcement yet.

feststellen welche Methoden eine beliebige Kompo hat

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • feststellen welche Methoden eine beliebige Kompo hat

    Hi,

    ich muß festellen welche Methoden eine beliebige Kompo hat. Gibt es etwas vergleichbares wie "TObject.Methods.count"?

    tia
    Thorsten

  • #2
    Hallo Thorsten,

    sieh doch mal in der Unit TypeInfo nach. Dort sind allerlei nützliche Methoden deklariert, um auf die published-Eigenschaften zuzugreifen.

    Z.B. kannst die mit folgendem Code die published Methoden einer Klasse auslesen:
    <PRE>
    uses TypeInfo;

    function GetMethodList(hClass : TClass; var mList : PPropList) : integer;
    var pti : PTypeInfo;
    n : integer;
    begin
    pti:=hClass.ClassInfo;
    n:=GetTypeData(pti).PropCount; // Anzahl aller properties
    GetMem(mList,n*SizeOf(Pointer)); // vorläufig Platz für alle
    Result:=GetPropList(pti,tkMethods,mList); // nur Methoden lesen
    ReallocMem(mList,Result*SizeOf(pointer)); // tatsächliche Größe
    end;

    </PRE>

    Achtung: Speicherfreigeben nicht vergessen.

    Viel Erfolg.
    Andreas

    Comment


    • #3
      Hallo Andreas,<br>weißt Du evt. auch ob man public functions und procedures herankommt

      Comment


      • #4
        Unter http://sourceforge.net/projects/dunit gibt es ein Testframework für Delphi, welches die Published Proceduren abfragt, um automatisierte Tests durchzuführen. Da hier auch der Quellcode vorliegt kannst Du ja mal nachsehen, wie die dort die Published Methoden bestimmen um es für deine Wünsche anzupassen

        Comment


        • #5
          Hallo Bernhard,<br>ich dachte hier an die public Methoden

          Comment


          • #6
            Nur für published Eigenschaften und methoden werden durch den Compiler RTTI's -> Runtime Type Informationen erzeugt. Da public nicht mehr published ist gibts also auch keine RTTI's mehr.
            Einzigste Möglichkeit ist die Funktionalität der Compilerbasierenden RTTI's nachzubauen und selber die wichtigen Informationen im Code zu hinterlegen. Also sowas wie RegisterMethodName(TMyClass, @TMyClass.MyMethod, 'MyMethod', 2 Paramters, 1 = Self, 2 = Integer);
            Oder man speckt das Klassenkonzept ab, konzenriert die Funktionalität in COM und nutzt den Typelib Editor um all dies einzupfelgen.<br>
            Oder man wartet ca. 6 Monate und Borland hat dann hoffentlich .NET Unterstützung, wo sich ja ALL die ändern soll, so daß M$ jederzeit auch meinen Code als wäre es Source lesen kann

            Gruß Hage

            Comment


            • #7
              Hi,

              Tschuldigung wenn ich doof frage. Aber wo liegt der tiefere Sinn, alle Methoden/properties eines Objekts in Erfahrung zu bringen ???

              ?? und Gruß
              Gesin

              Comment


              • #8
                Neugier ?:

                Comment

                Working...
                X