Dan*_*lly 2 delphi pointers tlist
我有一些Typed TLists,我在排序时遇到问题
通常,对于无类型的TList,我会有一个函数,例如:
function SortByJob(Item1: Pointer; Item2: Pointer): Integer;
var
p1, p2: JobPointer;
begin
p1 := JobPointer(Item1);
p2 := JobPointer(Item2);
if p1.job > p2.job then
Result := 1
else
if p1.job = p2.job then
Result := 0
else
Result := -1
end;
Run Code Online (Sandbox Code Playgroud)
这将由列表调用
JobList.Sort(SortByJob)
Run Code Online (Sandbox Code Playgroud)
但是我已经在我当前的应用程序中决定我们要将TLists锁定到某些指针类型,所以在上面的例子中我们将JobList声明为:
JobList: array[0..4] of TList<JobsPointer>;
Run Code Online (Sandbox Code Playgroud)
现在我打电话的时候
JobList[0].Sort(SortByJob)
Run Code Online (Sandbox Code Playgroud)
我得到一个"参数不够"的错误.
有任何想法吗?
我已经比较了如果我在一个无类型的"标准"TList上使用上面的Sort函数,那么它将正确编译...
Vil*_*nde 10
使用IComparer的实例对通用列表进行排序.以下是对整数列表进行排序的示例:
uses Generics.Collections, Generics.Defaults;
procedure TForm1.FormCreate(Sender: TObject);
var
L : TList<integer>;
begin
L := TList<integer>.Create;
L.Add(2);
L.Add(1);
L.Sort(TComparer<integer>.Construct(
function (const L, R: integer): integer
begin
Result := L - R;
end
)) ;
L.Free;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5717 次 |
| 最近记录: |