Generics Defaults TDelegatedComparer (Delphi)
Description
This example demonstrates the usage of TDelegatedComparer and anonymous methods in order to create a custom comparer.
Code
procedure Sort;
var
List: TList<String>;
Comparer: IComparer<String>;
I: Integer;
begin
Randomize;
{ Create a new delegated comparer. You will use anonymous methods. }
Comparer := TDelegatedComparer<String>.Create(
{ TComparison<String> }
function(const Left, Right: String): Integer
begin
{ Consider the strings as numbers and return }
{ a comparison between them. }
Result := StrToInt(Left) - StrToInt(Right);
end);
{ Create a new list of strings. }
List := TList<String>.Create(Comparer);
{ Populate the list with random numbers. }
for I := 0 to 5 do
List.Add(Random(5).ToString);
{ Sort the list }
List.Sort;
for I := 0 to List.Count - 1 do
writeln(List[I]);
{ Free resources }
List.Free;
end;
begin
{ Call the procedure defined above }
Sort;
readln;
end.
Uses
- System.Generics.Defaults.TDelegatedComparer ( fr | de | ja )
- System.Generics.Defaults.IComparer ( fr | de | ja )
- System.Generics.Defaults.TDelegatedComparer.Create ( fr | de | ja )
- System.Generics.Defaults.TComparison ( fr | de | ja )