[Delphi]如何根据函数名字符串进行函数调用

如题所述

只对于特定ID的钢筋进行参数修正。 最初想根据一个ID对应创建一个函数,然后进行case调用。考虑到可能效率不高,想到能否通过字符串的函数名进行调用,因为一系列的函数命名是有格式的,比如"ConvertBar_300","ConvertBar_305"等。所以就确定可以通过ID构造出调用的函数名称,然后进行函数调用。百度一下找到了一种可以使用字符串进行函数调用的方法。1,首先把待调用的函数声明为TForm的一个Published方法。 TBarConvertToolkit = class(TForm)publishedfunction ConvertBarPic_227(const AOldParams: string): string;
function ConvertBarPic_300(const AOldParams: string): string;
function ConvertBarPic_486(const AOldParams: string): string;
function ConvertBarPic_487(const AOldParams: string): string;
end;利用TForm的published函数能通过方法名调用函数的机制。2,调用的时候使用函数地址指针进行调用即可。function GGJ11BarParamsConvert(ABarPicID: Integer; const AOldParams: string;
out ANewParams: string): Boolean;varsConvertFunc: string;
pFunc: function(const AOldParams: string): string of object;beginResult := False;
sConvertFunc := Format('ConvertBarPic_%d', [ABarPicID]);
Result := ANewParams '';end;end;使用函数指针进行函数调用,跟普通的函数调用一样。 使用字符串的函数名进行函数调用,其他可以去掉case的判断方法,不然肯定需要进行条件分支判断。可以美化代码的可读性。
温馨提示:答案为网友推荐,仅供参考