gpt4 book ai didi

delphi - Delphi Xe2 中的泛型排序出错

转载 作者:行者123 更新时间:2023-12-03 18:27:03 25 4
gpt4 key购买 nike

我希望有人能看到这里可能出了什么问题。在 Xe2 中,我有一个要排序的通用 TObjectList。我有一个在不同位置排序的 TObjectList,所以我在旧代码上建模了新代码。一切看起来都是正确的:ComparePosControl 是一个非 OOPS 函数; Rpt 是一个表单的嵌套方法,TPosCtrl 是一个简单的类。

function ComparePosControl(L, R: TPosCtrl): integer;
begin
result := L.SortNum - R.SortNum;
end;


procedure Rpt(RParent: TWinControl);
begin
PosCtrls := TObjectList<TPosCtrl>.Create;
try
AddPosCtrls(RParent);
PosCtrls.Sort(TComparer<TPosCtrl>.Construct(ComparePosControl));

但我不断收到此错误:

[DCC 错误] Rputils.pas(1552):E2010 不兼容的类型:“System.Generics.Defaults.TComparison”和“Procedure”

有任何想法吗?

TIA

标记

最佳答案

稍微改变函数以匹配原型(prototype)(添加 const 修饰符):

function ComparePosControl(const L, R: TPosCtrl): integer;

你也可以使用匿名函数:
PosCtrls.Sort(TComparer<TPosCtrl>.Construct(
function (const L, R: TPosCtrl): integer;
begin
result := L.SortNum - R.SortNum;
end;
));

关于delphi - Delphi Xe2 中的泛型排序出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22623469/

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