gpt4 book ai didi

delphi - 如何获取方法指针指向的方法的名称?

转载 作者:行者123 更新时间:2023-12-03 14:47:53 24 4
gpt4 key购买 nike

我定义了以下内容:

  • 方法指针,如果验证成功则返回 0,否则返回错误代码

    TValidationFunc = Function(AParam: TAnObject): integer Of Object;
  • 要执行的功能列表:

    Functions: TObjectList < TValidationFunc>;

我将多个带有此签名的函数放入我的函数列表中。

为了执行它们,我执行:

For valid In Functions Do
Begin
res := -1;
Try
res := valid(MyObject);
Except
On E: Exception Do
Log('Error in function ??? : ' + E.Message, TNiveauLog.Error, 'PHVL');
End;
Result := Result And (res = 0);
End;

如果该函数引发异常,如何在日志中获取原始函数的名称?

最佳答案

最简单的解决方案是 - 正如 David 所暗示的 - 将名称与函数指针一起存储,如下所示:

TYPE
TValidationFunc = Function(AParam: TAnObject): integer Of Object;
TFunctions = TDictionary<TValidationFunc,String>;

VAR
Functions : TFunctions;

填充列表:

Functions:=TFunctions.Create;
Functions.Add(Routine1,'Routine1');
Functions.Add(Routine2,'Routine2');

然后当你运行它时:

For valid In Functions.Keys Do Begin
Try
res := valid(MyObject);
Except
On E: Exception Do Begin
Log('Error in function ' + Functions[valid] + ' : ' + E.Message, TNiveauLog.Error, 'PHVL');
res := -1;
End;
End;
Result := Result And (res = 0);
End;

通过这种方式,您可以将验证函数与 TDictionary 中的名称“链接”,这样当您拥有一个时,就可以获取另一个。

关于delphi - 如何获取方法指针指向的方法的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21933275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com