我在Delphi7]中创建一个TStringList(包含名称/值对),我想根据其值对TStringList进行排序,然后将具有最大值的名称分配给Labels。
] >>中SL: TStringList; SL:= TStringList.Create; SL.Values['chelsea']:= '5'; SL.Values['Liverpool']:= '15'; SL.Values['Mancity']:= '10'; SL.Values['Tot']:= '0'; SL.Values['Manunited']:= '20';
最后,此TStringList必须根据值进行排序。实际上,名字必须是具有最高值的名字。>>>>在Delphi7
非常感谢!
我在Delphi7中创建了一个TStringList(包含名称/值对),我想根据其值对TStringList进行排序,然后将具有最大值的名称分配给Labels。 SL:TStringList; SL:= ...
您可以使用CustomSort
方法执行此操作。像这样:
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
function StringListSortProc(List: TStringList; Index1, Index2: Integer): Integer;
var
i1, i2: Integer;
begin
i1 := StrToInt(List.ValueFromIndex[Index1]);
i2 := StrToInt(List.ValueFromIndex[Index2]);
Result := i2 - i1;
end;
var
SL: TStringList;
Index: Integer;
begin
SL := TStringList.Create;
try
SL.Values['Chelsea'] := '5';
SL.Values['Liverpool'] := '15';
SL.Values['Man City'] := '10';
SL.Values['Spurs'] := '0';
SL.Values['Man United'] := '20';
WriteLn('Before sort');
for Index := 0 to SL.Count-1 do
WriteLn(' ' + SL[Index]);
SL.CustomSort(StringListSortProc);
WriteLn;
WriteLn('After sort');
for Index := 0 to SL.Count-1 do
WriteLn(' ' + SL[Index]);
finally
SL.Free;
end;
ReadLn;
end.