Delphi XE7 Android如何存储函数指针以便以后访问?

时间:2015-03-01 13:29:38

标签: function delphi pointers delphi-xe7 tstringlist

使用Delphi创建Windows应用程序时,可以在TStringList变量中存储函数指针,类似于......

function n_func(var data: integer): integer;
begin
  //do something with data that will change its value
  Result := data;
end;

...

var
  ls: TStringList;
begin
  try
    ls := TStringList.Create;
    ls.AddObject('myfunc', TObject(@n_func));
    ...
    ...
  finally
    ls.Free;
  end;
end;

但这不是Android中的一个选项,I've read this article解释了如何在需要存储对象的引用时解决问题。当需要存储对函数的引用时,可能是类似的解决方案,稍后将在应用程序执行期间动态调用该函数?

1 个答案:

答案 0 :(得分:4)

使用字典。声明函数的类型:

type
  TMyFuncType = reference to function(var data: integer): integer;

然后是字典:

var
  Dict: TDictionary<string, TMyFuncType>;

以通常的方式创建一个:

Dict := TDictionary<string, TMyFuncType>.Create;

像这样添加:

Dict.Add('myfunc', n_func);

像这样检索

Func := Dict['myfunc'];

从文档中了解更多信息:http://docwiki.embarcadero.com/Libraries/en/System.Generics.Collections.TDictionary