Hallo,
ich habs auch mit einer Prozedur probiert, die direkt in der Klassendefinition steht(wie Ereignisprozeduren).
Damit funktionierts auch:
Delphi-Quellcode:
type
TForm1 = class(TForm)
Button1: TButton;
procedure pProbe(Text: String);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var aPointer: Pointer;
begin
aPointer := MethodAddress('pProbe');
end;
Wenn ich jetzt aPointer aufrufen will, muss ich aber erst einen Typ deklarieren, der der Originalprozedur entspricht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
type
TProbe = procedure(Text: String);
var
aProbe: TProbe;
begin
aProbe := MethodAddress('pProbe');
aProbe('irgendein Text');
end;
Oder gleich der direkte Weg(ohne type):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
aProbe: procedure(Text: String);
begin
aProbe := MethodAddress('pProbe');
aProbe('irgendein Text');
end;
Die Frage ist: kann ich aProbe so deklarieren, damit ich mehrere Prozedurtypen aufrufen kann(z.B. meherere Parameter). Die Parameteranzahl(und Typen) sind mir bekannt.
Ich hoffe so ists klar