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