UNIT uDListe;
(* ******************************************************************** *)
(* *)
(* K L A S S E : TListe - (Teil-)abstrakte Klasse *)
(* -------------------------------------------------------------------- *)
(* Version : 2.01 *)
(* Autor : (c) S. Spolwig, OSZ-Handel I, 10997 Berlin *)
(* *)
(* Aufgabe : Allgemeine dynamische Liste zur Verwaltung beliebiger*)
(* Daten-Objekte. *)
(* uDListe ist schnittstellen-kompatibel mit uSListe. *)
(* Zum Bewegen in der Liste ist intern eine Listenmarke *)
(* mitgefuehrt, die die jeweils aktuelle Listenposition *)
(* bezeichnet. Alle Operationen werden auf der aktuellen*)
(* Position ausgefuehrt. *)
(* In abgeleiteten Klassen sollte der Elemententyp de- *)
(* klariert und die abstrakten Methoden Load, Store und *)
(* SearchElement überschrieben werden. *)
(* *)
(* Compiler : Delphi 4.0 *)
(* Aenderung : 2.01 - 13-OKT-00 IsFull entfernt *)
(* ******************************************************************** *)
INTERFACE
(* ==================================================================== *)
type
TListe = class (TObject)
protected
Kollektion : array of Pointer;
private
Listenlaenge, // Anzahl der belegten Elemente
AktuellePos : integer; // auf aktivem Element oder EoList
public
constructor Create; virtual;
procedure Init;
procedure First;
procedure Next;
procedure previous;
procedure Last;
function GetElement: pointer;
procedure SetElement (Elem : pointer);
procedure Append (Elem : pointer);
procedure Remove;
procedure RemoveAll;
function GetLen : integer ;
function GetAktuellePos : integer;
function EoList : boolean;
function IsFirst : boolean;
function IsLast : boolean;
function IsEmpty : boolean;
function SearchElement (suchElem : pointer) : pointer; virtual; abstract;
procedure Load (Dateiname : string); virtual; abstract;
procedure Store(Dateiname : string); virtual; abstract;
end;
(* ----------------- B e s c h r e i b u n g -------------------------
Oberklasse : TObject
Bezugsklassen : -
Methoden
--------
Create
Auftrag : Leere L. erzeugen
vorher : -
nachher : ListenLaenge ist Null, AktuellePos ist 0.
Init
Auftrag : L. initial.
vorher : L. ist vorhanden
nachher : ListenLaenge ist Null, AktuellePos ist 0.
First
Auftrag : Listenmarke auf das 1. (vorhandene) Element setzen
vorher : Die Liste ist nicht leer
nachher : Aktuelle Position ist 1.
Ist die Liste leer , geschieht nichts
Next
Auftrag : Die Listenmarke auf das naechste Element setzen.
vorher : Die Liste ist nicht leer und akt. Pos ist nicht letztes El.
nachher : Die Marke steht auf der neuen aktuellen Position
ist die Liste leer oder EoList erreicht, geschieht nichts.
Previous
Auftrag : Die Listenmarke um eins auf das vorhergehende Element zuruecksetzen
vorher : Die Liste ist nicht leer und akt. Pos ist nicht 1. Element.
nachher : Die Marke steht auf der neuen aktuellen Position.
Ist die Liste leer oder die aktuelle Position war 1, geschieht nichts.
Last
Auftrag : Listenmarke auf das letzte Element der Liste setzen
vorher : Die Liste ist nicht leer.
nachher : Letztes vorhandenes Element ist aktuelle Position
GetElement
Anfrage : Zugriff auf das aktuelle Element zum Lesen
vorher : Die Liste ist nicht leer.
nachher : GetElement liefert das aktuelle Element.
SetElement (Elem : Pointer)
Auftrag : Zugriff auf die aktuelle Position zum Schreiben
vorher : Die Liste ist initialisiert.
nachher : Elem ist an aktueller Position uebergeben
Append (Elem : Pointer)
Auftrag : Neues Element an das Ende der Liste anhaengen.
Wenn die Liste leer war, ist das neue El. das erste.
vorher : Die Liste ist initialisiert
nachher : Listenlaenge ist um eins erhoeht. Ist die Liste voll,
geschieht nichts.
Remove
Auftrag: Das aktuelle Element loeschen.
vorher : Die Liste ist nicht leer.
nachher: Das aktuelle Element ist aus der Liste entfernt. Die Listen-
laenge ist um eins vermindert. AktuellePos ist 0.
RemoveAll
Auftrag: Alle Elemente aus der Liste entfernen
vorher : -
nachher: Die Liste ist leer. AktuellePosition ist 0.
EoList
Anfrage: ob das Ende der Liste erreicht ist.
vorher : Die Liste ist initialisiert.
nachher: True, wenn Ende der Liste erreicht ist. Die Listenmarke
steht hinter dem letzten belegten Element.
IsEmpty
Anfrage: ob Liste leer ist
vorher : Die Liste ist initialisiert.
nachher: True, wenn die Liste leer ist.
GetLen
Anfrage: gibt Listenlaenge zurueck
vorher : Liste ist initialisiert
nachher: -
SearchElement (suchElem : Pointer) : Pointer;
Anfrage: ob suchElem in der Liste gefunden wurde
vorher : -
nachher: Gefundenes Element wird zurückgegeben. Wenn Liste leer ist oder
nicht gefunden wird EoList zurückgegeben.
Load (dateiname : string);
Auftrag: Liste aus externer Datei laden. Wenn keine Datei existiert,
dann neue Datei mit der Laenge 0 anlegen.
vorher : Die Liste ist initialisiert.
nachher: Die Liste ist in den Arbeitsspeicher geladen. Datei ist geschlossen.
Store (dateiname : string);
Auftrag: Liste in externe Datei speichern
vorher : -
nachher: Die Liste ist gespeichert. Ist die Liste leer, wird nichts
gespeichert. Datei ist geschlossen.
----------------------------------------------------------------------- *)
|