[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
{ "TDataBase.Replace" erledigt). }
{ ---------------------------------------------------------------- }
{ Holt sich die Informationen - die "UpDatePrepare" vorsorglich }
{ gespeichert hat - und den neuen Schl.sselausdruck und .bergibt }
{ beides an "IdxReplace" aus LLIndex, das die eigentliche Arbeit }
{ erledigt. }
{ ---------------------------------------------------------------- }
PROCEDURE TIndex.UpDateIndex;
{ ---------------------------------------------------------------- }
{ .hnliche Aufgabe wie "UpDateIndex", nur mit dem kleinen Unter- }
{ schied, da. es jetzt keinen alten Inhalt gibt (es wurde ja ein }
{ Datensatz angeh.ngt) und deshalb auch die entsprechende Methode }
{ "IdxAppend" von LLIndex Verwendung findet. }
{ ---------------------------------------------------------------- }
PROCEDURE TIndex.apPendIndex;
{ ---------------------------------------------------------------- }
{ L..t eine Reindizierung durchf.hren; als Auslastungsfaktor wird }
{ dabei die in "dbTypes" definierte typisierte Konstante "IdxAus- }
{ lastung" verwendet. N.here Hinweise dazu siehe Unit "LLIndex". }
{ Der R.ckgabewert ist bei erfolgreicher Ausf.hrung True, sonst }
{ False. }
{ ---------------------------------------------------------------- }
FUNCTION TIndex.ReIndex : BOOLEAN;
{ ---------------------------------------------------------------- }
{ Baut die komplette Indexdatei neu auf - notwendig nur nach einem }
{ Pack-Vorgang oder nach "Create". }
{ Der R.ckgabewert ist bei erfolgreicher Ausf.hrung True, sonst }
{ False. }
{ ---------------------------------------------------------------- }
FUNCTION TIndex.ReBuild : BOOLEAN;
{ ---------------------------------------------------------------- }
{ Gibt den eigenen Dateinamen (sprich, den der Indexdatei) zur.ck. }
{ ---------------------------------------------------------------- }
FUNCTION TIndex.FileName : PATHSTR;
{ ---------------------------------------------------------------- }
{ Gibt den Schl.sselausdruck - so wie er im Kopf der Indexdatei }
{ gespeichert ist - zur.ck. N.heres siehe Modul "dbTypes" - Typ }
{ "IdxCreateInfo". }
{ ---------------------------------------------------------------- }
FUNCTION TIndex.Key : STRING;
{ ---------------------------------------------------------------- }
{ Gibt den Typ der Indexdatei zur.ck; in der Version 1.0 von TDB }
{ kann das praktisch nur NTX sein. N.heres siehe Modul "dbTypes" - }
{ Typ "IdxCreateInfo". }
{ ---------------------------------------------------------------- }
FUNCTION TIndex.Typ : TIdxTyp;
{ ---------------------------------------------------------------- }
{ Gibt die L.nge des Indexausdruckes - wie im Kopf der Indexdatei }
{ definiert - zur.ck. N.heres siehe Modul "dbTypes" - Typ "Idx- }
{ CreateInfo". }
{ ---------------------------------------------------------------- }
FUNCTION TIndex.KeyLen : WORD;
{ ---------------------------------------------------------------- }
{ Versucht "abzusch.tzen", ob der Index zusmmengesetzt ist; er- }
{ kennbar ist dieser Umstand daran, da. im Ausdruck das Zeichen }
{ "+" (Zusammensetzen von mehreren Feldern) oder "(" (String- }
{ funktionen wurden angewandt) vorkommt. }
{ Gibt False zur.ck, wenn ein anscheinend "sauberer" (i.e. unbe- }
{ handelter) Indexausdruck vermutet wird, sonst True. }
{ ---------------------------------------------------------------- }
FUNCTION TIndex.IsCombined : BOOLEAN;
{ ---------------------------------------------------------------- }
{ Schmei.t sich selbst wieder aus dem Speicher - nachdem zuerst }
{ die Datenstrukturen der Low-Level-Indexroutinen gel.scht wurden. }
{ Wird eigentlich nie direkt ben.tigt, da das Datenbankobjekt, in }
{ das die Indexobjekte eingef.gt werden, das ordnungsgem..e Ende }
{ .bernimmt. }
{ ---------------------------------------------------------------- }
DESTRUCTOR TIndex.CLOSE;
{ ---------------------------------------------------------------- }
{ T D A T A B A S E }
{ ---------------------------------------------------------------- }
{ ---------------------------------------------------------------- }
{ Datenbank-Objekt: Verwaltung der eigentlichen Datenbank; rudi- }
{ ment.re Funktionen zum .ffnen und Erzeugen von Datenbanken und }
{ zum Lesen, Schreiben und L.schen von Datens.tzen / Memos. }
{ ---------------------------------------------------------------- }
{ f enth.lt alle f.r eine Datenbank direkt relevanten Daten wie }
{ Dateiname, Anzahl und Beschreibung der Felder, aktuelle Position }
{ des Satzzeigers und Anzahl der Datens.tze, diverse Dateibe- }
{ schreibungen usw. usf. }
{ f wird vor allem f.r die Identifizierung der (prozeduralen) Low- }
{ Level-Routinen ben.tigt. }
{ ---------------------------------------------------------------- }
{ Die Methoden lassen sich in folgende Gruppen einteilen: }
{ - Use, Create, Close: Constructor's zum .ffnen bzw. zum Er- }
{ stellen von Datenbanken; Destructor zum Schlie.en. }
{ - Go, Skip, DeSkip, First, Last: Zum Setzen der Position des }
{ Satzzeigers. }
{ - EOF, BOF, Count, RecNo, LastRec: Zum Ermitteln der aktuellen }
{ Position des Satzzeigers. }
{ - Read, Append, Replace: Zum direkten Lesen, Anh.ngen und .ber- }
{ schreiben von Datens.tzen. }
{ - ReadL, ReadR, ReadD, ReadD_, ReadB, ReadM, ReplaceL, ReplaceR, }
{ ReplaceD, ReplaceD_, ReplaceB und ReplaceM: Lesen und Schrei- }
{ ben von Datensatz-Feldern unter Verwendung der entsprechenden }
{ Turbo-Pascal- bzw. vom TDB-System definierten Spezial-Typen. }
{ - Delete, Recover, Deleted: L.schen und Wiederherstellen von }
{ Datens.tzen, Abfrage, ob gel.scht. }
{ - AnzahlFelder, FeldName, FeldNummer, FeldTyp, ContainsMemos: }
{ Ermitteln des Aufbaus unbekannter Datenbanken. }
{ - RecordSize, HeaderSize, FileSize, LastUpdate, IsModified, }
{ dBVersion: Allgemeine Informationen .ber die Datenbankdatei. }
{ - IndexOn, IsIndexed: Festlegen von Indices. }
{ - Search, Continue: Suchen nach vorgegebenen Feldinhalten. }
{ - Pack: Packt die Datenbank - und alles, was damit zusammenh.ngt }
{ (Index-Files, Memos). }
{ PRIVAT(E): }
{ Die Private-Methoden sind dem Benutzer nicht zug.nglich. }
{ - CompXXX, CompXXXOld, IsIt, IsItOld, PruefeRest: Zur Verwendung }
{ durch "Search" vorgesehen. }
{ - MemoRead, MemoReplace, MemoAppend: Lesen, Schreiben und An- }
{ h.ngen von Memos. }
{ ---------------------------------------------------------------- }
{ ---------------------------------------------------------------- }
{ .ffnet die angegebene Datenbank - sofern vorhanden und OK. Der }
{ eigentliche Job wird von der Low-Level-Routine dbUse .bernommen, }
{ die im Fehlerfall den Fehlerstatus via Unit Error setzt; dabei }
{ wird auch der Constructor mit FAIL beendet, sprich, das Objekt }
{ wird nicht (!) erzeugt. }
{ Wenn die Datenbank auch Memofelder enth.lt, so wird auch die }
{ Memodatei ge.ffnet. }
{ ---------------------------------------------------------------- }
CONSTRUCTOR TDataBase.Use (Name : PATHSTR);
{ ---------------------------------------------------------------- }
{ Erzeugt eine Datenbank unter dem angegebenen Namen. Im Record }
{ CreateInfo m.ssen die Informationen .ber die enthaltenen Felder }
{ und deren Anzahl stehen. }
{ Der eigentliche Job wird von der Low-Level-Routine dbUse .ber- }
{ nommen, die im Fehlerfall den Fehlerstatus via Unit Error setzt. }
{ ---------------------------------------------------------------- }
{ Die Angaben werden einem Plausibilt.tstest unterzogen, im Falle }
{ einer falschen / ung.ltigen Angabe wird wieder Error mit der }
{ Aufgabe betraut, den Fehler bekanntzugeben und der Constructor }
{ endet mit FAIL, sprich, das Objekt wird nicht (!) erzeugt. }
{ ---------------------------------------------------------------- }
CONSTRUCTOR TDataBase.Create (Name : PATHSTR;
CreateInfo : TCreateInfo);
{ ---------------------------------------------------------------- }
{ Schlie.t die Datenbank wieder. }
{ ---------------------------------------------------------------- }
DESTRUCTOR TDataBase.CLOSE;
{ ---------------------------------------------------------------- }
{ Setzt den Datensatzzeiger auf den angegebenen Datensatz - sofern }
{ vorhanden. Es wird eine Bereichs.berpr.fung vorgenommen, die }
{ False zur.ckgibt, wenn nicht positioniert werden konnte. }
{ ---------------------------------------------------------------- }
{ Sollte die Datenbank indiziert sein (PrimeIdx <> Nil), so wird }
{ zwar ebenfalls auf den Datensatz gesprungen, der in der Daten- }
{ bankordnung an der p-ten Stelle steht; um den Index-Zeiger je- }
{ doch ebenfalls mitf.hren zu k.nnen, mu. der entsprechende Satz }
{ erst in der Indexdatei (sequentiell !!!) gesucht und darauf posi-}
{ tioniert werden ! }
{ ---------------------------------------------------------------- }
{ Bei "Go" wird auf den angegebenen Satz - unabh.ngig vom "Set- }
{ Deleted"-Flag - auch dann positioniert, wenn dieser gel.scht }
{ ist ! }
{ ---------------------------------------------------------------- }
{ Das Gegenst.ck zu "Go" ist "RecNo", das die (physikalische) Po- }
{ sition des Satzzeigers zur.ckgibt. }
{ ---------------------------------------------------------------- }
{ Aus Performance-Gr.nden sollte auf "Go" - ebenso auf "IdxGo" - }
{ in indizierten Datenbanken verzichtet werden zugunsten von Skip. }
{ Eine entsprechende Konzeption ist bereits in der Analyse / im }
{ Entwurf von N.ten und sollte keineswegs der Bequemlichkeit hal- }
{ ber .bergangen werden ! }
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson