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