Thema: Delphi Arbeiten mit TList

Einzelnen Beitrag anzeigen

Bomberbb

Registriert seit: 23. Sep 2003
227 Beiträge
 
#1

Arbeiten mit TList

  Alt 24. Sep 2008, 07:34
Hallo,

ich möchte eine verkettete Liste von Punkttypen erstellen. Da ich nicht das Rad neu erfinden will, hab ich mit TList angeschaut und versucht , davon meine Liste abzuleiten. Ich bin mir aber nicht sicher, ob das nun von der Logik her so richtig ist.

Was haltet Ihr davon:
Delphi-Quellcode:
Unit listen;

Interface
Uses
  Classes,
  Typendef;

Type
  PunktType = Record
    X : real;
    Y : real;
    lage : byte;
  End;
  pPunktType = ^PunktType;

  { TPunktTypeList class }

  TPunktTypeList = Class(TList)
  Private
  Protected
    Procedure Notify(Ptr : Pointer;Action : TListNotification); Override;
    Function GetPkt(inIndex : Integer) : PunktType;
    Procedure SetPkt(inIndex : Integer;inPkt : Punkttype);
  Public
    Constructor Create;

    Function Add(inPkt : Punkttype) : Integer;
    Function Remove(inIndex : Integer) : Integer;
    Property Items[inIndex : Integer] : Punkttype Read GetPkt Write SetPkt;Default;
  End;

  { TPunktTypeList class }

Implementation

{ TPunktTypeList }

Function TPunktTypeList.Add(inPkt : Punkttype) : Integer;
Var
  p : pPunkttype;
Begin
  New(p);
  Result:=Inherited Add(p);
End;

Constructor TPunktTypeList.Create;
Begin
  Inherited Create;
End;

Function TPunktTypeList.GetPkt(inIndex : Integer) : PunktType;
Begin
  Result:=pPunkttype(Inherited Items[inIndex])^;
End;

Procedure TPunktTypeList.Notify(Ptr : Pointer;Action : TListNotification);
Begin
  If Action = lnDeleted Then
    Dispose(pPunkttype(Ptr));
  Inherited Notify(Ptr, Action);
End;

Function TPunktTypeList.Remove(inIndex : Integer) : Integer;
Begin
  Result:=Inherited Remove(Inherited Items[inIndex]);
End;

Procedure TPunktTypeList.SetPkt(inIndex : Integer;inPkt : Punkttype);
Begin
  pPunkttype(Inherited Items[inIndex])^:=inPkt;
End;
End.
  Mit Zitat antworten Zitat