私は Delphi の初心者で、整数値の昇順でレコードを並べ替えるために、レコードの TList の Sort メソッドを呼び出す方法がわかりません。以下のような記録があります。
type
TMyRecord = record
str1: string;
str2: string;
intVal: integer;
end;
そして、そのようなレコードの一般的なリスト:
TListMyRecord = TList<TMyRecord>;
ヘルプ ファイルでコード例を見つけようとしたところ、次のものが見つかりました。
MyList.Sort(@CompareNames);
クラスを使用しているため、使用できません。そこで、少し異なるパラメーターを使用して独自の比較関数を作成しようとしました。
function CompareIntVal(i1, i2: TMyRecord): Integer;
begin
Result := i1.intVal - i2.intVal;
end;
しかし、コンパイラは常に「十分なパラメータがありません」をスローします - で呼び出すとエラーが発生しますopen.Sort(CompareIntVal);
。だから私はヘルプファイルに近づこうとしました:
function SortKB(Item1, Item2: Pointer): Integer;
begin
Result:=PMyRecord(Item1)^.intVal - PMyRecord(Item2)^.intVal;
end;
PMyRecord をPMyRecord = ^TMyRecord;
関数を呼び出すさまざまな方法を試しましたが、常にエラーが発生します...