Moin...
Man kann auch den Comparer (IComparer) als Instanz erzeugen und dem Create der Liste mitgeben.
Zitat:
Anmerkung: Es wird empfohlen, die Klasse TComparer als Basis für benutzerdefinierte Vergleichsoperationen zu verwenden, anstatt das Interface IComparer direkt zu implementieren.
Vorteil:
Der Comparer ist für verschiede Listen (gleichen Typs) verwendbar, anstatt jedesmal eine anonyme Prozedur zu schreiben. (Wiederverwendbarkeit) Damit kannst du 100 Mal sortieren...
Delphi-Quellcode:
// Unit1
TDatabase = class
strict private
FDatabaseTypeString: string;
FDatabaseType: TDatabaseType;
FDatabaseVersionString: string;
FDatabaseTypePath: string;
FDatabaseEditor: TDatabaseEditor;
procedure SetDatabaseVersionString(const Value: string);
procedure SetDatabaseTypeString(const Value: string);
public
constructor Create;
destructor Destroy; override;
property DatabaseType: TDatabaseType read FDatabaseType write FDatabaseType;
property DatabaseTypeString: string read FDatabaseTypeString write SetDatabaseTypeString;
property DatabaseVersionString: string read FDatabaseVersionString write SetDatabaseVersionString;
property DatabaseTypePath: string read FDatabaseTypePath;
property DatabaseEditor: TDatabaseEditor read FDatabaseEditor write FDatabaseEditor;
end;
TDatabaseComparer = class(TComparer<TDatabase>)
public
function Compare(const Left, Right: TDatabase): Integer; override;
end;
function TDatabaseComparer.Compare(const Left, Right: TDatabase): Integer;
begin
Result := CompareStr(Left.DatabaseTypePath, Right.DatabaseTypePath);
end;
// Unit2
var
ComparerDatabase: TDatabaseComparer;
begin
ComparerDatabase := TDatabaseComparer.Create;
FDatabaseList := TDatabaseList.Create(ComparerDatabase);
.
.
.
FDatabaseList.Sort;