program SortList;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
System.Generics.Collections, System.Generics.Defaults;
type
TItem =
class
private
FValue : Integer;
FID : Integer;
public
constructor Create( AID, AValue : Integer );
property ID : Integer
read FID
write FID;
property Value : Integer
read FValue
write FValue;
end;
{ TItem }
constructor TItem.Create( AID, AValue : Integer );
begin
inherited Create;
FID := AID;
FValue := AValue;
end;
procedure TestRun;
var
LList : TList<TItem>;
LItem : TItem;
begin
LList := TObjectList<TItem>.Create( TComparer<TItem>.Construct(
function(
const L, R : TItem ) : Integer
begin
Result := L.Value - R.Value;
end ) );
LList.Add( TItem.Create( 1, 4081 ) );
LList.Add( TItem.Create( 2, 4272 ) );
LList.Add( TItem.Create( 3, 4272 ) );
LList.Add( TItem.Create( 4, 4273 ) );
LList.Add( TItem.Create( 5, 4272 ) );
LList.Add( TItem.Create( 6, 4313 ) );
LList.Add( TItem.Create( 7, 4272 ) );
LList.Add( TItem.Create( 8, 4313 ) );
LList.Add( TItem.Create( 9, 4304 ) );
LList.Add( TItem.Create( 10, 4082 ) );
LList.Add( TItem.Create( 11, 4081 ) );
LList.Add( TItem.Create( 12, 4081 ) );
LList.Add( TItem.Create( 13, 4081 ) );
LList.Add( TItem.Create( 14, 4313 ) );
LList.Add( TItem.Create( 15, 4314 ) );
LList.Add( TItem.Create( 16, 4272 ) );
LList.Add( TItem.Create( 17, 4313 ) );
LList.Add( TItem.Create( 18, 4314 ) );
LList.Add( TItem.Create( 19, 4081 ) );
LList.Add( TItem.Create( 20, 4080 ) );
LList.Add( TItem.Create( 21, 4272 ) );
LList.Add( TItem.Create( 22, 38892 ) );
LList.Sort;
WriteLn( '
ID':4, '
Value':7, '
List.IndexOf':14 );
WriteLn( '
==':4, '
=====':7, '
============':14 );
for LItem
in LList
do
begin
WriteLn( LItem.ID : 4, LItem.Value : 7, LList.IndexOf( LItem ) : 14 );
end;
end;
begin
try
TestRun;
except
on E :
Exception do
WriteLn( E.ClassName, '
: ', E.
Message );
end;
Readln;
end.