Einzelnen Beitrag anzeigen

heuckeg

Registriert seit: 6. Sep 2006
3 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: class function <> normale function mit Klassenzuge

  Alt 2. Mär 2007, 08:26
Hallo,

folgendes zu diesem Thema:
TObjectList ist von TList abgeleitet, und TList hat die Methode Sort, der eine Adresse auf eine selbst zu erstellende Funktion übergeben wird, die 2 Objekte vergleicht (mehr in der Delphi Hilfe und TList - Sort).

Beispiel:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}

uses
  sysutils,
  Contnrs;

type
   TIntTest =class
     public
       v: integer;
   end;


function CompareObjects(Item1, Item2: pointer): integer;

begin {CompareObject}
  result := 0;
  if TIntTest(Item1).v < TIntTest(Item2).v then
    result := -1
  else
    if TIntTest(Item1).v > TIntTest(Item2).v then
      result := 1;
end; {CompareObjects}


var
  i: integer;

  MeineListe: TObjectList;
  MeinObject: TIntTest;

begin
  try
    MeineListe := TObjectList.Create;

    // Testobject anlegen
    for i := 0 to 10 do
    begin
      MeinObject := TIntTest.Create;
      MeinObject.v := Random(100);
      MeineListe.Add(MeinObject);
    end;

    writeln('Vorher:');
    for i := 0 to MeineListe.Count - 1 do
      writeln(TIntTest(MeineListe[i]).v);

    MeineListe.Sort(CompareObjects);

    writeln('Nachher:');
    for i := 0 to MeineListe.Count - 1 do
      writeln(TIntTest(MeineListe[i]).v);

    readln;

    // Aufräumen...
    for i := 0 to MeineListe.Count - 1 do
    begin
      MeinObject := TIntTest(MeineListe[i]);
      MeinObject.Free;
    end;
  finally
    MeineListe.Free;
  end;
end.
Gruß,
Gunter
Gunter Heuckeroth
  Mit Zitat antworten Zitat