FreePascal中的TStringList CustomSort方法

时间:2014-02-21 09:44:39

标签: components freepascal lazarus

我对以下代码的错误做了什么

function CompareFloat(List: TStringList; Index1, Index2: Integer): Integer;

我将其称为:

var
   SL :TstringList;

SL.CustomSort(CompareFloat);
//SL.CustomSort(@CompareFloat); // Tried this one also 

第一个函数调用'SL.CustomSort(CompareFloat)'从编译器检索到该错误“错误:为调用指定的参数数量错误”CompareFloat“

第二个函数调用'SL.CustomSort(@CompareFloat)'从编译器中检索到该错误错误:只能使用类引用引用类方法

1 个答案:

答案 0 :(得分:2)

SL.CustomSort(CompareFloat);如果您将{$mode delphi}指令添加到某个单位开头的某个位置,则会有效。

但是SL.CustomSort(@CompareFloat);应该可以正常工作。确保错误消息不是由其他原因引起的。

示例:

program Project1;

//{$mode delphi}

uses
  Classes,
  SysUtils;

function CompareFloat(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result := StrToInt(List[Index1]) - StrToInt(List[Index2]);
end;

var
  SL: TStringList;
begin
  SL := TStringList.Create;
  try
    SL.Add('3');
    SL.Add('2');
    SL.Add('1');
    SL.CustomSort(@CompareFloat);
    //SL.CustomSort(CompareFloat);
    Writeln(SL[0], SL[1], SL[2]);
    Readln;
  finally
    SL.Free;
  end;
end.