Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Array sortieren

  Alt 29. Dez 2016, 10:50
Wenn TPerson eine Klasse ist könnten TPeronen eine TObjectList sein.
Unter D7 z.B. so:

Delphi-Quellcode:
  TPersonen = class(TObjectList)
  private
    function GetItems(Index: integer): TPerson;
  public
    property Items[Index: integer]: TPerson read GetItems; default;
    procedure SortByGroesse;
  end;

..

{ TPersonen }

function TPersonen.GetItems(Index: integer): TPerson;
begin
  Result := TPerson(inherited Items[Index]);
end;

function GroesseCompare(A, B: TPerson): integer;
begin
  if A.Groesse > B.Groesse then
    Result := 1
  else
    if A.Groesse < B.Groesse then
      Result := -1
    else
      Result := 0;
end;

procedure TPersonen.SortByGroesse;
begin
  inherited Sort(@GroesseCompare);
end;

..

procedure TSomeForm.Button1Click(Sender: TObject);
var
  Personen: TPersonen;
  I, Index: integer;
begin
  Personen := TPersonen.Create;
  try
    for I := 1 to 10 do
    begin
      Index := Personen.Add(TPerson.Create);
      Personen[Index].Name := ..
      Personen[Index].Groesse := ..
      Personen[Index].Alter := ..
    end;
    Personen.SortByGroesse;
  finally
    Personen.Free;
  end;
end;
  Mit Zitat antworten Zitat