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; Listenlaenge, // Anzahl der belegten Elemente AktuellePos : integer; // auf aktivem Element oder EoList public constructor Create; virtual; procedure Init; virtual; procedure First; virtual; procedure Next; virtual; procedure previous; virtual; procedure Last; virtual; function GetElement: pointer; virtual; procedure SetElement (Elem : pointer); virtual; procedure Append (Elem : pointer); virtual; procedure Remove; virtual; procedure RemoveAll; virtual; function GetLen : integer ; virtual; function GetAktuellePos : integer; virtual; function EoList : boolean; virtual; function IsFirst : boolean; virtual; function IsLast : boolean; virtual; function IsEmpty : boolean; virtual; function SearchElement (suchElem : pointer) : pointer; virtual; //abstrakt procedure Load (Dateiname : string); virtual; //abstrakt procedure Store(Dateiname : string); virtual; //abstrakt 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. ----------------------------------------------------------------------- *) |