gpt4 book ai didi

function - Delphi 中可以对回调函数进行类型转换吗?

转载 作者:行者123 更新时间:2023-12-02 20:48:24 25 4
gpt4 key购买 nike

Delphi TList.Sort() 方法需要一个 function (Item1, Item2: Pointer): Integer; 类型的回调函数参数来比较列表项。

我想摆脱回调函数中的类型转换,并希望定义这样的回调函数:

function MyTypeListSortCompare( Item1, Item2 : tMyType ) : integer;
begin
result := WideCompareStr(Item1.Name, Item2.Name);
end;

...
MyList.Sort(tListSortCompare(MyTypeListSortCompare));
...

但不幸的是,这会触发“无效类型转换”编译器错误。

是否有可能在 Delphi(2006) 中正确类型转换函数指针?

最佳答案

我通常会做这样的事情:

function MyTypeListSortCompare( Item1, Item2 : Pointer ) : integer;
var
LHS: TMyType absolute Item1;
RHS: TMyType absolute Item2;
begin
result := WideCompareStr(LHS.Name, RHS.Name);
end;

关于function - Delphi 中可以对回调函数进行类型转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49409755/

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