[<<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