gpt4 book ai didi

delphi - 获取重载方法的地址位置

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

如何获取重载的函数/过程/方法的所有地址位置?

例如,Dialogs.MessageDlgPosHelp 被重载,有两个不同的版本 - 一个没有默认按钮,另一个有。我如何获取这两个函数的地址位置?

最佳答案

基于this thread还有什么Thomas Mueller指出那里,您可以定义与您想要获取其地址(对于每个重载)的方法具有相同签名的类型。如果您随后声明这些类型的变量并向它们分配方法指针,您将确保编译器为您的已知变量类型选择正确的重载,而且如果它们不在代码中的任何地方使用,它也不会忽略它们(某些重载可能不会链接到您的二进制文件中)。

因此,根据他的想法,它可能会寻找 MessageDlgPosHelp函数重载如下:

type
TMessageDlgPosHelp1 = function(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
const HelpFileName: string): Integer;
TMessageDlgPosHelp2 = function(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
const HelpFileName: string; DefaultButton: TMsgDlgBtn): Integer;

procedure TForm1.Button1Click(Sender: TObject);
var
MessageDlgPosHelp1: TMessageDlgPosHelp1;
MessageDlgPosHelp2: TMessageDlgPosHelp2;
begin
MessageDlgPosHelp1 := MessageDlgPosHelp;
MessageDlgPosHelp2 := MessageDlgPosHelp;
ShowMessage(Format('%p; %p', [@MessageDlgPosHelp1, @MessageDlgPosHelp2]));
end;

关于delphi - 获取重载方法的地址位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11183243/

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