Einzelnen Beitrag anzeigen

Benutzerbild von lincore
lincore

Registriert seit: 27. Dez 2008
Ort: Bad Segeberg
26 Beiträge
 
Delphi 2009 Professional
 
#1

Generische Liste sortieren (ohne .NET)

  Alt 29. Dez 2008, 16:28
Moin,
ich schreibe gerade eine generische Listenklasse, die ein array of T kapselt. Nun würde ich gerne eine universell verwendbare Methode implementieren, um die Liste zu sortieren. Soweit ich weiß, lassen sich Operatoren nur mit .NET überladen (welches ich nicht verwende). Andere Möglichkeiten wollen mir als Anfänger auch nicht einfallen.

Weiß jemand eine Lösung?
lincore


PS: Hier das Interface meiner Klasse (soweit):
Delphi-Quellcode:
const
  TOP_OF_LIST = -255; // equals system.high(mArray)

type
  TGenericList<T> = class
  private
    mArray: array of T;
    //mError: boolean;
    mErrorMsg: string;
    mCount: integer;
    function auxRearrange(fromPosition: integer = TOP_OF_LIST;
                       insertion: boolean = true; freeSpace: integer = 1): boolean;
    function getData(index: integer): T;
    procedure setData(index: integer; element: T);

  public
    constructor create();
    procedure clear();

    function assign(list: TGenericList<T>): boolean;

    function insert(element: T; index: integer): boolean; overload;
    function insert(list: TGenericList<T>; index: integer = TOP_OF_LIST;
                    from: integer = 0; til: integer = TOP_OF_LIST): boolean;
                    overload;

    function remove(index: integer): boolean; overload;
    function remove(first, last: integer): boolean; overload;

    function push(element: T): boolean;
    function pop(): T;

    function length(): integer;
    function high(): integer;
    function notEmpty(): boolean;

    function first(var element: T): boolean;
    function next(var element: T): boolean;
    function last(var element: T): boolean;

    property error: string read mErrorMsg;
    property data[index: integer]: T read getData write setData;
  end;
Wenn Stallman eines Tages mit Zornesröte im Gesicht und blutverschmierter Klinge vor deiner Tür steht, behaupte nicht ich hätte dich nicht gewarnt.
  Mit Zitat antworten Zitat