Delphi 类内指向类方法的过程数组

Delphi 类内指向类方法的过程数组,delphi,class,pointers,methods,procedure,Delphi,Class,Pointers,Methods,Procedure,我有一个类(TExample),我想有一个指向TExample方法的指针数组。例如,我希望使用TExample.ThinkOne并执行aPointers[1]:=@TExample.ThinkOne或类似操作。我怎样才能正确地做到这一点?谢谢。您可以这样做: type TProcType = procedure(const AParm: Integer) of object; // Method type TProcArray = array of TProcType; // Dynam

我有一个类(TExample),我想有一个指向TExample方法的指针数组。例如,我希望使用TExample.ThinkOne并执行aPointers[1]:=@TExample.ThinkOne或类似操作。我怎样才能正确地做到这一点?谢谢。

您可以这样做:

type
  TProcType = procedure(const AParm: Integer) of object; // Method type
  TProcArray = array of TProcType; // Dynamic array 
  TExample = class
  public
    procedure A(const AParm: Integer); // Method signature matches TProcType
    procedure B(const AParm: Integer);
  end;

var
  pa : TProcArray;

procedure Init(const AExample: TExample);
begin
  SetLength(pa, 2);
  pa[0] := AExample.A;
  pa[1] := AExample.B;
end;      

您不需要在问题前面加上
[DELPHI]
。这就是标记的用途。我如何修改它,以便使用AddObject将方法添加到StringList,而不是数组,这样我就可以将可搜索的字符串与每个字符串关联起来。然后我想传入一个命令字符串并执行与该字符串匹配的方法。@kbriggs,您可以添加一个指向stringlist的函数指针,也可以创建一个包装器对象。但使用TDictionary可能会更简洁。当我尝试以下操作时:Commands.AddObject('Alpha',@AExample.a)出现“variable required”编译器错误。我创建了一个单独的问题来说明我的问题: