[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
DB06.PAS
{ ---------------------------------------------------------------- }
{ TDB DEMOPROGRAMM 6 - VERWENDUNG INDEX, SORTIERTE AUSGABE }
{ ---------------------------------------------------------------- }
{ Verwendet die von "DB05" erzeugte Datenbank samt Indices (m.ssen }
{ bereits existieren), .ffnet Datenbank- und Indexfiles und gibt }
{ die Datenbank jeweils nach den verschiedenen Indices sortiert }
{ aus. }
{ ---------------------------------------------------------------- }
{ Als Error-Handler wird wieder "ErrPrint" eingesetzt, wodurch }
{ eventuelle Fehler am Drucker mitprotokolliert werden. }
{ ---------------------------------------------------------------- }
{ (c) 1992 by Aurora featuring M.J. Schwaiger }
{ ---------------------------------------------------------------- }
{ History: }
{ 1992-05-05 MS Interfacefestlegung und Implementierung. }
{ ---------------------------------------------------------------- }
PROGRAM Db06;
{$UNDEF Windows}
USES
{$IFDEF Windows}
WINCRT,
{$ENDIF}
DbTypes, { Enth.lt die Typdefinitionen f.r alle }
{ Module des Datenbanksystems TDB. }
LongIdle, { Idle-Prozeduren f.r l.ngere Vorg.nge }
Error, { Fehlerbehandlungsroutinen, -handler }
TDB; { Die eigentlichen Datenbank-Objekte. }
VAR
DB : PDataBase; { Datenbankobjekt }
Index1,
Index : PIndex;
Cnt : LONGINT;
BEGIN { Hauptprogramm }
{$IFNDEF Windows}
SetErrHandler (ErrPrint); { Alle Fehler werden auf dem }
{ Drucker mitprotokolliert. }
SetLongIdleHandler (LIdleScreenInit, { "Fortschrittsanzeige" }
LIdleScreenUpDate, LIdleScreenDone);
{$ENDIF}
WRITELN (MEMAVAIL);
{ Speicherallozierung und Initialisierung des Datenbankobjektes }
DB := NEW (PDataBase, Use ('DB05'));
DB^.Go (10); { Was passiert jetzt ? }
DB^.DELETE;
DB^.Go (20);
DB^.DELETE;
DB^.Go (30);
DB^.DELETE;
DB^.Go (40);
DB^.DELETE;
DB^.Go (50);
DB^.DELETE;
DB^.Go (60);
DB^.DELETE;
DB^.Go (70);
DB^.DELETE;
DB^.Go (80);
DB^.DELETE;
DB^.Go (90);
DB^.DELETE;
DB^.Go (100);
DB^.DELETE;
DB^.SetDeleted (On);
IF (GetErr = 0) AND (DB^.Count > 0) THEN { Keine Fehler ? }
BEGIN
{ Initialisierung Indexfile }
Index := NEW (PIndex, Use ('DB05STR', 'STRASSE', DB));
DB^.IndexOn ('STRASSE', Index);
Index := NEW (PIndex, Use ('DB05PLZ', 'PLZ', DB));
DB^.IndexOn ('PLZ', Index);
Index := NEW (PIndex, Use ('DB05GEBOREN', 'GEBOREN', DB));
DB^.IndexOn ('GEBOREN', Index);
Index1 := NEW (PIndex, Use ('DB05GEHALT', 'GEHALT', DB));
DB^.IndexOn ('GEHALT', Index1);
Index := NEW (PIndex, Use ('DB05Name', 'NAME', DB));
DB^.IndexOn ('NAME', Index);
DB^.SetPrimeIdx (Index1);
WRITELN (MEMAVAIL);
DB^.First;
Cnt := 0;
{ Prim.rindex ist der Name ! }
WHILE (GetErr = 0) AND (NOT (DB^.EOF)) DO
BEGIN
INC (Cnt);
WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
DB^.READ ('NAME'), ' ', DB^.ReadR ('GEHALT'));
DB^.Skip (1);
END; { WHILE NOT DB^.EOF DO }
WRITELN;
WRITELN ('Das waren ', Cnt, ' Datens.tze ! Stimmts ?');
DB^.Last;
Cnt := 0;
WRITELN;
{ Prim.rindex ist der Name ! }
WHILE (GetErr = 0) AND (NOT (DB^.BOF)) DO
BEGIN
INC (Cnt);
WRITELN (Cnt : 3, '-', DB^.RecNo : 3, ': ',
DB^.READ ('NAME'), ' ', DB^.ReadR ('GEHALT'));
DB^.Skip ( - 1);
END; { WHILE NOT DB^.EOF DO }
WRITELN;
WRITELN ('Das waren ', Cnt, ' Datens.tze ! Stimmts ?');
DISPOSE (DB, CLOSE); { Index wird automatisch mit gel.scht ! }
END; { IF (GetErr = 0) AND ... }
WRITELN (MEMAVAIL);
WRITELN;
WRITE ('Weiter mit Taste ...');
READLN;
END. { PROGRAM Db06 }
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson