[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
AARRAY.INT
{ ---------------------------------------------------------------- }
{ A R R A Y - C O L L E C T I O N }
{ ---------------------------------------------------------------- }
{ Das hier definierte Objekt "P/TArray" soll die Verwaltung einer }
{ Art von dynamischem String-Array erm.glichen: Strings k.nnen }
{ nach Belieben gesetzt, gel.scht und gelesen werden. Gro.er }
{ Vorteil: hier erfolgt die Speicherung nicht linear, sondern in }
{ den Indizes k.nnen auch "L.cher" sein (beispielsweise k.nnen die }
{ Elemente 1 bis 10 vorhanden sein, dann geht es aber erst mit 120 }
{ bis 130 weiter) und die Maximalgr..e des "Arrays" mu. nicht }
{ schon bei der Compilierung feststehen. }
{ Ach ja: dies ist von Konzept her nat.rlich keine (!) "StringCol- }
{ lection", denn diese speichert ja nach dem Alphabet - und hier }
{ wird nach dem Index sortiert ! }
{ ---------------------------------------------------------------- }
{ (c) 1992 by Aurora featuring M.J. Schwaiger }
{ ---------------------------------------------------------------- }
{ History: }
{ Datum / Bearb. / Art }
{ 16. 6.1992 MS Interface-Festlegung, Beginn Implemen- }
{ tierung. }
{ ---------------------------------------------------------------- }
UNIT AArray;
INTERFACE
USES
{$IFDEF Windows}
WOBJECTS;
{$ELSE}
OBJECTS;
{$ENDIF}
TYPE
{ ---------------------------------------------------------------- }
{ Die eigentliche Collection. Zur Verwendung "von au.en" sind an }
{ und f.r sich nur die letzten drei Methoden bestimmt; die anderen }
{ sind die f.r (Sorted) Collections geforderten Standard-Methoden, }
{ die die vordefinierten Dummy-Methoden ersetzen m.ssen. }
{ ---------------------------------------------------------------- }
{ "SetStr" und "DeleteStr" geben als Best.tigung (oder Fehlermel- }
{ dung einen Boolean-Wert zur.ck; "GetStr" liefert bei Fehlern }
{ einen Leerstring als Funktionsergebnis. }
{ ---------------------------------------------------------------- }
PArray = ^TArray;
TArray = OBJECT (TSORTEDCOLLECTION)
FUNCTION Compare (Key1, Key2 : POINTER) : INTEGER; VIRTUAL;
PROCEDURE FreeItem (Item : POINTER); VIRTUAL;
FUNCTION GetItem (VAR S : TSTREAM) : POINTER; VIRTUAL;
PROCEDURE PutItem (VAR S : TSTREAM; Item : POINTER); VIRTUAL;
FUNCTION SetStr (Nr : INTEGER; S : STRING) : BOOLEAN; VIRTUAL;
FUNCTION DeleteStr (Nr : INTEGER) : BOOLEAN; VIRTUAL;
FUNCTION GetStr (Nr : INTEGER) : STRING; VIRTUAL;
END;
{ ---------------------------------------------------------------- }
{ Ein Element (Item) meiner Collection. Warum Pointer auf Pointer, }
{ ist leicht erkl.rt: Der Record mu. ein Pointer sein, um ihn }
{ .berhaupt in einer Collection verwenden zu k.nnen und der String }
{ ist ein Pointer, damit nicht f.r jedes Element die vollen 256 }
{ String-Bytes verbraucht werden - daf.r nehme ich den kleinen }
{ Performance-Verlust (und die drei Byte f.r den zus.tzlichen }
{ Zeiger) in Kauf ... }
{ ---------------------------------------------------------------- }
TIndex = INTEGER;
PArrElement = ^TArrElement;
TArrElement = RECORD
Index : TIndex;
STR : PSTRING;
END;
{ ---------------------------------------------------------------- }
{ T A R R A Y }
{ ---------------------------------------------------------------- }
{ ---------------------------------------------------------------- }
{ Vergleicht die beiden Items; wenn der Index gleich ist, so wird }
{ 0 zur.ckgegeben, ist Index 1 kleiner, -1, sonst +1. }
{ ---------------------------------------------------------------- }
FUNCTION TArray.Compare (Key1, Key2 : POINTER) : INTEGER;
{ ---------------------------------------------------------------- }
{ Gibt den Speicher des angegebenen Items wieder frei. }
{ ---------------------------------------------------------------- }
PROCEDURE TArray.FreeItem (Item : POINTER);
{ ---------------------------------------------------------------- }
{ Liest vom angegebenen Stream ein Element ein und gibt es zur.ck. }
{ ---------------------------------------------------------------- }
FUNCTION TArray.GetItem (VAR S : TSTREAM) : POINTER;
{ ---------------------------------------------------------------- }
{ Schreibt das angegebene Element in der Reihenfolge Index - }
{ String auf den angegebenen Stream. }
{ ---------------------------------------------------------------- }
PROCEDURE TArray.PutItem (VAR S : TSTREAM; Item : POINTER);
{ ---------------------------------------------------------------- }
{ Setzt (oder .berschreibt) den String mit dem angegebenen Index. }
{ ---------------------------------------------------------------- }
FUNCTION TArray.SetStr (Nr : INTEGER; S : STRING) : BOOLEAN;
{ ---------------------------------------------------------------- }
{ L.scht das Element mit dem angegebenen Index aus der Kollektion }
{ und aus dem Speicher. }
{ ---------------------------------------------------------------- }
FUNCTION TArray.DeleteStr (Nr : INTEGER) : BOOLEAN;
{ ---------------------------------------------------------------- }
{ Gibt den String mit der angegebenen Nummer zur.ck; wenn dieser }
{ nicht gefunden werden kann, so wird ein Leerstring zur.ckgegeben.}
{ ---------------------------------------------------------------- }
FUNCTION TArray.GetStr (Nr : INTEGER) : STRING;
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson