Einzelnen Beitrag anzeigen

GroHae

Registriert seit: 19. Apr 2007
Ort: Nabburg
83 Beiträge
 
Delphi 2007 Enterprise
 
#1

Sortierung bei TList. Ich wende es an verstehe es aber nicht

  Alt 22. Nov 2007, 14:35
Hallo zusammen,

ich habe (gekürzt) folgende Typen

Delphi-Quellcode:

  TRecVKUmsatzAusFVArtikel = class
  private
    FUnternehmenNr_ID : integer;
    FJahr_ID : integer;
    FUmsatz : real;
    ...
  public
    procedure Clear;
    ...
    property UnternehmenNr_ID: integer read FUnternehmenNr_ID write FUnternehmenNr_ID;
    property Jahr_ID: integer read FJahr_ID write FJahr_ID;
    property Umsatz: real read FUmsatz write FUmsatz;
  end;

  TLstVKUmsatzAusFVArtikel = class
  protected
    FLst: TObjectList;
  private
    function GetRecords(index: integer): TRecVKUmsatzAusFVArtikel;
  public
    constructor Create;
    destructor Destroy; override;
    ...
    function Add(iRec: TRecVKUmsatzAusFVArtikel): TRecVKUmsatzAusFVArtikel;
    ...
    procedure SortBYUmsatz;
    property Records[index: integer]: TRecVKUmsatzAusFVArtikel read GetRecords; default;
  end;
Delphi-Quellcode:

implementation

function CompareByUmsatz(Item1 : Pointer; Item2 : Pointer) : Integer;
var
  Rec1, Rec2: TRecVKUmsatzAusFVArtikel;
begin
  
  Rec1:= TRecVKUmsatzAusFVArtikel(Item1);
  Rec2:= TRecVKUmsatzAusFVArtikel(Item2);

  // Now compare by string
  if customer1.Umsatz > customer2.Umsatz then
    Result := 1
  else
   if customer1.Umsatz = customer2.Umsatz then
     Result := 0
   else
     Result := -1;

end;
...
Delphi-Quellcode:

function TLstVKUmsatzAusFVArtikel.Add(iRec: TRecVKUmsatzAusFVArtikel): TRecVKUmsatzAusFVArtikel;
begin
  FLst.Add(iRec);
  result := iRec;
end;


procedure TLstVKUmsatzAusFVArtikel.SortBYUmsatz;
begin
 Flst.Sort(CompareByUmsatz);
end;
Ich habe heute zum ersten mal die Methode Sort benutzt welche ich ja von TObjectList erbe. Klappt auch alles super.
Kurz gegoogelt und dann mit Hilfe von http://www.delphibasics.co.uk/RTL.asp?Name=TList
alles zusammengestöpselt.

Aber was mache ich da?

Irgendwie stelle ich eine Prozedur! (kein Objekt!) in meiner Unit zur Verfügung welche dann mit FLst.Sort(CompareByUmsatz) genutzt wird? Hä Was? was passiert da? Magie? Zauberei?

Ich verstehe rein gar nicht was ich da mache

Kann mir das wer erklären?
Grüße

Thomas
  Mit Zitat antworten Zitat