UNIT uStrListe; (* ******************************************************************** *) (* *) (* K L A S S E : TStrListe *) (* -------------------------------------------------------------------- *) (* Version : 1.32 *) (* Autor : S. Spolwig, OSZ-Handel I, 10997 Berlin *) (* *) (* Aufgabe : Allgemeine statische Liste zur Verwaltung von *) (* strings. *) (* Zum Bewegen in der Liste ist intern eine Listenmarke *) (* mitgefuehrt, die die jeweils aktuelle Listenposition *) (* bezeichnet. Alle Operationen werden auf der aktuellen*) (* Position ausgefuehrt. *) (* *) (* Compiler : Delphi 6.0 *) (* Aenderung : V. 1.0 - 20-AUG-97 *) (* 24-FEB-00 an SListe angepasst *) (* 1.32 09-FEB-02 procedure Init, SetElement *) (* ******************************************************************** *) INTERFACE (* ==================================================================== *) const MAXLAENGE = 10000; type TElement = string; TStrListe = class (TObject) protected Kollektion : array [0..MAXLAENGE + 1] of TElement; ListenLaenge, // Anzahl der belegten Elemente AktuellePos : Word; procedure quicksort(anfang, ende: Word); virtual; public constructor Create; virtual; procedure Init; virtual; procedure First; virtual; procedure Next ; virtual; procedure previous; virtual; procedure Last ; virtual; function GetElement : TElement; virtual; procedure SetElement (Elem : TElement); virtual; procedure Append (Elem : TElement); virtual; procedure Remove; virtual; procedure RemoveAll; virtual; function SearchFor (Elem : TElement) : integer; virtual; procedure Sort; virtual; function GetLen : integer; virtual; function EoList : boolean; virtual; function IsFirst : boolean; virtual; function IsLast : boolean; virtual; function IsEmpty : boolean; virtual; function IsFull : boolean; virtual; 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 0, AktuellePos ist 0. Init Auftrag : L. init. vorher : L. ist erzeugt nachher : ListenLaenge ist 0, 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 : TElement) Auftrag : Zugriff auf das aktuelle Element zum Schreiben vorher : Die Liste ist initialisiert. nachher : Elem ist an aktuelle Position uebergeben Append (var Elem : TElement) Auftrag : Neues Element am Ende der Liste erzeugen und Elem 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. AktuellePos 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 : integer; Anfrage: gibt Listenlaenge zurueck vorher : Liste ist initialisiert nachher: - SearchFor (Elem : TElemt) : integer; Anfrage: Elem in der Liste suchen vorher: - nachher: liefert Position in der Liste. Wenn nicht vorhanden, dann 0 Sort Auftrag: Liste sortieren vorher : - nachher: Liste ist aufsteigend sortiert ----------------------------------------------------------------------- *) |