我有点像Delphi-newbie,我不知道如何调用TList of Records的Sort方法,以便按升序整数值对记录进行排序.我有如下记录:
type
TMyRecord = record
str1: string;
str2: string;
intVal: integer;
end;
Run Code Online (Sandbox Code Playgroud)
以及此类记录的通用列表:
TListMyRecord = TList<TMyRecord>;
Run Code Online (Sandbox Code Playgroud)
试图在帮助文件中找到代码示例并找到以下代码:
MyList.Sort(@CompareNames);
Run Code Online (Sandbox Code Playgroud)
我不能使用,因为它使用类.所以我尝试用一些不同的参数编写自己的比较函数:
function CompareIntVal(i1, i2: TMyRecord): Integer;
begin
Result := i1.intVal - i2.intVal;
end;
Run Code Online (Sandbox Code Playgroud)
但是编译器总是抛出"不够的参数" - 当我调用它时出错open.Sort(CompareIntVal);,这看起来很明显; 所以我试图更接近帮助文件:
function SortKB(Item1, Item2: Pointer): Integer;
begin
Result:=PMyRecord(Item1)^.intVal - PMyRecord(Item2)^.intVal;
end;
Run Code Online (Sandbox Code Playgroud)
与PMyRecord一样 PMyRecord = ^TMyRecord;
我尝试了不同的方法调用函数,总是得到一些错误......