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.