[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
TDB.INT

 { ---------------------------------------------------------------- }
 {                 TURBO-PASCAL-DATENBANK-SCHNITTSTELLE             }
 { ---------------------------------------------------------------- }
 { Datenbankschnittstelle f.r dBase-/Clipper-kompatible Datenbanken }
 { mit transparenter Indexverwaltung und der M.glichkeit des Memo-  }
 { zugriffes. Es sind keinerlei Ein-/Ausgabefunktionen enthalten,   }
 { wodurch die Module sowohl unter der DOS- als auch unter der      }
 { Windows-Version von Turbo-Pascal verwendbar sind.                }
 { ---------------------------------------------------------------- }
 { Haupts.chlich exportiert dieses Modul zwei Objekte:              }
 { TDataBase: Verwaltung der eigentlichen Datenbank; rudiment.re    }
 {     Funktionen zum .ffnen und Erzeugen von Datenbanken und zum   }
 {     Lesen, Schreiben und L.schen von Datens.tzen / Memos.        }
 { TIndex: Indexverwaltung; erfolgt allerdings f.r den Anwender     }
 {     unsichtbar, indem die ben.tigten Indexobjekte in das Daten-  }
 {     bankobjekt eingef.gt und von diesem verwaltet werden.        }
 { F.r jedes Feld der betreffenden Datenbank kann dabei maximal ein }
 { Index (-objekt) definiert werden - egal, ob dieser aus mehreren  }
 { Feldinhalten zusammengesetzt ist oder nicht.                     }
 { ---------------------------------------------------------------- }
 { Die Methoden geben meist einen Boolean-Wert zur.ck, der nor-     }
 { malerweise True und im Fehlerfall False ist; zus.tzlich wird in  }
 { der Unit Error der Fehlerstatus gesetzt und kann - zusammen mit  }
 { einer kurzen Erl.uterung - abgefragt oder durch einen Error-     }
 { Handler behandelt werden.                                        }
 { Wer am Fehlerstatus der Methoden nicht interessiert ist, kann    }
 { diesen nat.rlich durch Borland's Extended Syntax schlichtweg     }
 { ignorieren.                                                      }
 { ---------------------------------------------------------------- }
 {       (c)  1992  by  Aurora  featuring  M.J. Schwaiger           }
 { ---------------------------------------------------------------- }


 UNIT TDB; { Turbo-DataBase }

 INTERFACE

 {$UNDEF Debug}
 {$DEFINE Demo}


   USES
 {$IFDEF Demo}
     apRotect,
 {$ENDIF}
 {$IFDEF Debug}                     { "Debug" ben.tigt WRITELN etc. }
   {$IFDEF Windows}
     WINCRT,
   {$ELSE}
     CRT,
   {$ENDIF}
 {$ENDIF}
 {$IFDEF Windows}
     WinAdd,                          { Windows-Kompatibilit.ts-Unit }
     WinDOS,                                  { Windows-DOS-Routinen }
     Strings,                    { Null-terminated-Strings (PChar's) }
 {$ELSE}
     DOS,                                         { DOS-DOS-Routinen }
 {$ENDIF}
     AStrings,                                { STRINGS-Compatiblity }
     ADatum,                               { Aurora's Datumsroutinen }
     AStrTool,                 { Aurora's Stringbearbeitungsroutinen }

     DbTypes,                              { Globale Typdefinitionen }
     LongIdle,                { Idle-Prozeduren f.r l.ngere Vorg.nge }
     Error,                                       { Fehlerbehandlung }
     LLdBase,                     { Low-Level-Datenbankschnittstelle }
     NSIndex,                      { Lowest-Level-Indexschnittstelle }
     LLIndex,                         { Low-Level-Indexschnittstelle }
     LLMemo;                          { Low-Level-Memoschnittstelle }


   TYPE

 { ---------------------------------------------------------------- }
 { Index-Objekt: Indexverwaltung; erfolgt allerdings f.r den An-    }
 { wender unsichtbar, indem die ben.tigten Indexobjekte in das      }
 { Datenbankobjekt eingef.gt und von diesem verwaltet werden.       }
 { ---------------------------------------------------------------- }
 { Was durch den Benutzer ge.ndert werden kann, ist die Index-      }
 { funktion, die f.r das angegebene Feld des angegebenen Daten-     }
 { satzes einen nichtleeren String zur.ckliefern mu..               }
 { ---------------------------------------------------------------- }

     PIndex         = ^TIndex;
     TIndex         = OBJECT
       F            : Pdbf;
       Idx          : PIdx;
       Field        : TFeldStr;
       FieldNum     : BYTE;
       OldKey       : STRING;
       CONSTRUCTOR Use (Name : PATHSTR; AField : TFeldStr;
                                                      Adb : POINTER);
       CONSTRUCTOR Create (Name : PATHSTR; CI : TIdxCreateInfo;
                                                      Adb : POINTER);
       CONSTRUCTOR AutoUse (Name : PATHSTR; Adb : POINTER);

       FUNCTION    IndexFunction : STRING; VIRTUAL;

       FUNCTION    GetField (WhichField : TFeldStr) : STRING; VIRTUAL;
       FUNCTION    FieldLength : BYTE; VIRTUAL;
       FUNCTION    Unique : STRING; VIRTUAL;

       PROCEDURE   UpDatePrepare; VIRTUAL;
       PROCEDURE   UpDateIndex; VIRTUAL;
       PROCEDURE   apPendIndex; VIRTUAL;

       FUNCTION    ReIndex : BOOLEAN; VIRTUAL;
       FUNCTION    ReBuild : BOOLEAN; VIRTUAL;

       FUNCTION    FileName : PATHSTR; VIRTUAL;
       FUNCTION    Key : STRING; VIRTUAL;
       FUNCTION    Typ : TIdxTyp; VIRTUAL;
       FUNCTION    KeyLen : WORD; VIRTUAL;
       FUNCTION    IsCombined : BOOLEAN; VIRTUAL;

       DESTRUCTOR  CLOSE; VIRTUAL;
     END; { OBJECT TIndex }


 { ---------------------------------------------------------------- }
 { 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.                                              }
 { ---------------------------------------------------------------- }

     PDataBase      = ^TDataBase;
     TDataBase      = OBJECT
       F            : Pdbf;
       PrimeIdx     : PIndex;
       IdxArr       : ARRAY [1 .. MaxFelder] OF PIndex;
       Memos        : PMemo;
       CONSTRUCTOR Use (Name : PATHSTR);
       CONSTRUCTOR Create (Name : PATHSTR; CreateInfo : TCreateInfo);
       DESTRUCTOR  CLOSE; VIRTUAL;

       FUNCTION    Go (P : LONGINT) : BOOLEAN; VIRTUAL;
       FUNCTION    IdxGo (P : LONGINT) : BOOLEAN; VIRTUAL;
       FUNCTION    Skip (Rel : LONGINT) : BOOLEAN; VIRTUAL;
       FUNCTION    First  : BOOLEAN; VIRTUAL;
       FUNCTION    Last   : BOOLEAN; VIRTUAL;
       FUNCTION    MOVE   : BOOLEAN; VIRTUAL;
       FUNCTION    DeMove : BOOLEAN; VIRTUAL;
       FUNCTION    SetDeleted (State : BOOLEAN) : BOOLEAN; VIRTUAL;

       FUNCTION    EOF : BOOLEAN; VIRTUAL;
       FUNCTION    BOF : BOOLEAN; VIRTUAL;
       FUNCTION    Count : LONGINT; VIRTUAL;
       FUNCTION    RecNo : LONGINT; VIRTUAL;
       FUNCTION    IdxRecNo : LONGINT; VIRTUAL;
       FUNCTION    LastRec : LONGINT; VIRTUAL;

       FUNCTION    READ (FName : TFeldStr) : STRING; VIRTUAL;
       FUNCTION    APPEND : BOOLEAN; VIRTUAL;
       FUNCTION    Replace (FName : TFeldStr; Inhalt : STRING) :
                                                    BOOLEAN; VIRTUAL;
       FUNCTION    ReadL (FName : TFeldStr) : LONGINT; VIRTUAL;
       FUNCTION    ReadR (FName : TFeldStr) : REAL; VIRTUAL;
       FUNCTION    ReadD (FName : TFeldStr; VAR D : TDate) : BOOLEAN;
                                                             VIRTUAL;
       FUNCTION    ReadD_ (FName : TFeldStr) : STRING; VIRTUAL;
       FUNCTION    ReadB (FName : TFeldStr) : BOOLEAN; VIRTUAL;
       FUNCTION    ReadM (FName : TFeldStr) : PChar; VIRTUAL;

       FUNCTION    ReplaceL (FName : TFeldStr; L : LONGINT) :
                                                    BOOLEAN; VIRTUAL;
       FUNCTION    ReplaceR (FName : TFeldStr; R : REAL) : BOOLEAN;
                                                             VIRTUAL;
       FUNCTION    ReplaceD (FName : TFeldStr; D : TDate) : BOOLEAN;
                                                             VIRTUAL;
       FUNCTION    ReplaceD_ (FName : TFeldStr; D : STRING) : BOOLEAN;
                                                             VIRTUAL;
       FUNCTION    ReplaceB (FName : TFeldStr; B : BOOLEAN) :
                                                    BOOLEAN; VIRTUAL;
       FUNCTION    ReplaceM (FName : TFeldStr; PC : PChar) :

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson