Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Einstieg in Zeiger auf Methoden / Funktionen (https://www.delphipraxis.net/203143-einstieg-zeiger-auf-methoden-funktionen.html)

Rollo62 10. Jan 2024 11:03

AW: Einstieg in Zeiger auf Methoden / Funktionen
 
Meinst Du etwa?
https://docwiki.embarcadero.com/Libr...trings.Strings

Delphi-Quellcode:
MyStrings.Strings[0] := 'This is the first string';
MyStrings[0] := 'This is the first string';

Delphi.Narium 10. Jan 2024 11:48

AW: Einstieg in Zeiger auf Methoden / Funktionen
 
Suchst Du sinngemäß sowas? (nur ungetestet hingedaddelt - muss also nicht funktionieren)
Delphi-Quellcode:
uses
  Typinfo, Menus, ...;

procedure TForm1.FormCreate(Sender: TObject);
var
  sMethode : String;
  mi      : TMenuItem;
begin
  Tabelle.Open;
  while not Tabelle.Eof do begin
    sMethode := Tabelle.FieldByName('MenueZuzuweisendeMethode').AsString;
    if PropIsType(Self,sMethode,tkMethod) then begin
      mi        := TMenuItem.Create(Self);
      mi.Caption := Tabelle.FieldByName('MenueCaption').AsString;;
      mi.Name   := Tabelle.FieldByName('MenueName').AsString;;
      mi.Hint   := Tabelle.FieldByName('MenueHint').AsString;;
      SetMethodProp(mi,sMethode,GetMethodProp(Self,sMethode));
      // ... und alle weiteren zu setzenden Eigenschaften ...
    end;
    Tabelle.Next;
  end;
  Tabelle.Close;
end;
Statt Self ggfls. die Klasse, bei der die gewünschten Methoden zu finden sind, z. B. ActionList, ...

himitsu 10. Jan 2024 13:15

AW: Einstieg in Zeiger auf Methoden / Funktionen
 
Name (String) zu Methodenzeiger

* das gute alte Delphi-Referenz durchsuchenTObject.MethodAddress (welches auch der DFM-Loader benutzt)
* oder über die RTTI Delphi-Referenz durchsuchenTRttiMethod.CodeAddress


TRttiContext.Create.GetType(TIrgendwas).GetMethods -> Methode raussuchen (gibt leider kein FindMethod) und dann Delphi-Referenz durchsuchenTRttiMethod.CodeAddress

Delphi-Quellcode:
var Method: TMethod;
Method.Code := CodeAddress;
Method.Data := KlassenInstanz; // z.B. Self
x.OnIrgendwas := TNotifyEvent(Method); // oder welchen Typ auch immer das OnIrgendwas hat


Delphi-Quellcode:
var Event: TMethod;

Event.Code := Self.MethodAddress('Test');
Event.Data := Self;

// oder
for var Method in TRttiContext.Create.GetType(Self.ClassType).GetMethods do
  if SameText(Method.Name, 'Test') then begin
    Event.Code := Method.CodeAddress;
    Event.Data := Self;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr.
Seite 2 von 2     12   

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