Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: TList unter Android

  Alt 2. Mär 2018, 10:34
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;

Geändert von haentschman ( 2. Mär 2018 um 11:34 Uhr)
  Mit Zitat antworten Zitat