UNIT OLISTE; (* ******************************************************************** *) (* *) (* K L A S S E : COListe *) (* -------------------------------------------------------------------- *) (* Version : 1.0 *) (* *) (* Autor : S. Spolwig, OSZ-Handel I, 10997 Berlin *) (* *) (* Dateiname : soliste.pas *) (* *) (* Aufgabe : Allgemeine statische Objektliste zur Verwaltung *) (* beliebiger Objekte. *) (* Zum Bewegen in der Liste ist intern eine Listenmarke *) (* mitgefuehrt, die die jeweils aktuelle Listenposition *) (* bezeichnet. Alle Operationen werden auf der aktuellen*) (* Position ausgefuehrt. *) (* Vor dem ersten Listenzugriff MUSS die Prozedur Init *) (* aufgerufen werden mit der Uebergabe der Datengroesse:*) (* Init (sizeof(DatenElementTyp)) *) (* (SOLISTE entspricht SLISTEN in Turbo-Pascal.) *) (* *) (* Compiler : MSDOS - Turbo-Pascal 7.0 *) (* Aenderung : V. 1.0 - 20-AUG-97 *) (* 1.1 - 26-MAR-98 CsOliste, MAXLISTE=5000 *) (* Remove mit NIL *) (* 24-MAY-98 fuer Olib in COListe umbenannt*) (* ******************************************************************** *) INTERFACE (* ========================== Export ================================== *) const MAXLISTE = 5000; type TElement = pointer; COListe = object Liste : array [1..MAXLISTE + 1] of TElement; LiLaenge, (* Anzahl der belegten Elemente *) AktuellePos : word; Datasize : Word; constructor Init (dsize: word); procedure First; virtual; procedure Next ; virtual; procedure previous; virtual; procedure Last ; virtual; procedure GetData (var data); virtual; procedure PutData (var data); virtual; procedure AddNewElement; virtual; procedure Append (var data); virtual; procedure Remove; virtual; function Len : integer ; virtual; function EoList : boolean; virtual; function IsEmpty : boolean; virtual; procedure Load (dateiname : string); virtual; procedure Store (dateiname : string); virtual; end; (* ----------------- B e s c h r e i b u n g ------------------------- Oberklasse : - Bezugsklassen : KFSTREAM benutzte Module: - Methoden -------- Init (dsize:word) Auftrag : Liste mit der Elementgroesse initialisieren; leere L. erzeugen vorher : - nachher : Lilaenge ist Null. First Auftrag : Listenmarke an den Anfang der Liste setzen vorher : Die Liste ist initialisiert und nicht leer. nachher : Aktuelle Position ist 1 Next Auftrag : Die Listenmarke auf das naechste Element setzen vorher : Die Liste ist nicht leer nachher : Die Marke steht auf der neuen aktuellen Position Wenn die Liste leer ist, geschieht nichts Previous Auftrag : Die Listenmarke um eins zuruecksetzen vorher : Die Liste ist nicht leer. nachher : Die Marke steht auf der neuen aktuellen Position. Wenn die aktuelle Position 1 war, geschieht nichts Last Auftrag : Listenmarke auf das Ende der Liste setzen vorher : Die Liste ist nicht leer. nachher : Letztes vorhandenes Element ist aktuelle Position GetData (var data); Auftrag : Zugriff auf das aktuelle Element zum Lesen vorher : Die Liste ist nicht leer. nachher : - PutData (var data); Auftrag : Zugriff auf das aktuelle Element zum Schreiben vorher : Die Liste ist nicht leer oder AddNewElement ist ausgefuehrt. nachher : Data ist an aktuelles Element uebergeben AddNewElement Auftrag : Neues LEERES Element zur Aufnahme der Daten erzeugen und an der aktuellen Position in die Liste einfuegen vorher : - nachher : Neues Element ist in der Liste Append (var data); Auftrag : Neues Element an Ende der Liste erzeugen und data uebergeben. Wenn die Liste leer war ist das neue El. das erste. vorher : Die Liste ist initialisiert nachher : Listenlaenge ist um eins erhoeht. Ist MAXLISTE erreicht, 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. EoList Anfrage: Pruefen, 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. Len : integer; Anfrage: gibt Listenlaenge zur ck vorher : Liste ist initialisiert nachher: - Load (dateiname : string); Auftrag: Liste aus externer Datei laden vorher : Die Liste ist initialisiert. nachher: Die Liste ist in den Arbeitsspeicher geladen Store (dateiname : string); Auftrag: Liste in externe Datei speichern vorher : - nachher: Die Liste ist gespeichert. Ist die Liste leer, wird eine Datei der Laenge Null angelegt. ----------------------------------------------------------------------- *)
Zurück zur Startseite