home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / toolbox / idxdemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-01-21  |  2.7 KB  |  99 lines

  1. (* ------------------------------------------------- *)
  2. (*                   IDXDEMO.PAS                     *)
  3. (*     (c) 1990, 1992 Horst Zein & DMV-Verlag        *)
  4. (* ------------------------------------------------- *)
  5. PROGRAM IndexDemo;
  6.  
  7. USES
  8.   Crt, Index;
  9.  
  10. TYPE
  11.   Daten       = RECORD
  12.                   Nr   : LONGINT;
  13.                   Name : STRING [20];
  14.                 END;
  15.  
  16. VAR
  17.   c           : CHAR;
  18.   d           : Daten;
  19.   dFile       : FILE OF Daten;
  20.   DateiNr     : BYTE;
  21.   Ende, Exist : BOOLEAN;
  22.  
  23. BEGIN
  24.   ClrScr;
  25.   DateiNr := 3;
  26.   GotoXY(28, 1);  Write('*** Erfassungs - Demo ***');
  27.   GotoXY(11, 5);  Write('Nummer  :');
  28.   GotoXY(11, 7);  Write('Name    :');
  29.   Assign(dFile, 'DATEN.DAT');
  30.   {$I-}
  31.   Reset(dFile);
  32.   {$I+}
  33.   IF IOResult > 0 THEN
  34.     Rewrite(dFile);           { Neuanlage bei 1. Lauf }
  35.   Assign(Kette, 'DATEN.IDX');
  36.   ReadKette;
  37.   Ende := FALSE;
  38.   REPEAT
  39.     GotoXY(26,15);  ClrEol;
  40.     Write('Nummer = 0 --> Ende');
  41.     GotoXY(21, 7);  ClrEol;
  42.     GotoXY(21, 5);  ClrEol;  ReadLn(d.nr);
  43.     Ende := d.nr = 0;
  44.     IF NOT Ende THEN BEGIN
  45.       Exist := FindKey(DateiNr, d.nr);
  46.       IF Exist THEN BEGIN
  47.         Seek(dFile, Find^.RecNo);
  48.         Read(dFile, d);
  49.         GotoXY(51, 7);  Write('alt : ', d.name);
  50.         GotoXY(26,15);  Write('0 --> Satz löschen ');
  51.       END;
  52.       GotoXY(21, 7);  ReadLn(d.name);
  53.       IF d.name = '0' THEN
  54.         DelKey(DateiNr, Find)
  55.       ELSE BEGIN
  56.         IF NOT Exist THEN BEGIN
  57.           s.RecNo := FileSize(dFile);
  58.           s.Key   := d.nr;
  59.           AddKey(DateiNr, s);
  60.         END ELSE
  61.           s.RecNo := Find^.RecNo;
  62.         WHILE Length(d.Name) < 20 DO
  63.           d.Name := d.Name + ' ';
  64.         Seek(dFile, s.RecNo);  Write(dFile, d);
  65.       END;
  66.     END;
  67.   UNTIL Ende;
  68.  
  69.   GotoXY(28, 1);  Write ('*** Satzausgabe - Demo ***');
  70.   Find := Root[DateiNr];
  71.   Seek(dFile, Find^.RecNo);  Read(dFile, d);
  72.   GotoXY(6, 15);
  73.   Write(Chr(24):5, ' --> voriger Satz',
  74.         chr(25):5, ' --> nächster Satz',
  75.         'ESC'  :7, ' --> Ende');
  76.   REPEAT
  77.     GotoXY(21, 5);  ClrEol;  Write(d.Nr);
  78.     GotoXY(21, 7);  ClrEol;  Write(d.Name);
  79.     REPEAT
  80.       c := ReadKey;
  81.       IF c = #0 THEN
  82.         c := ReadKey
  83.       ELSE IF c <> #27 THEN
  84.         c := #0;
  85.     UNTIL (c = #27) OR (c = #72) OR (c =#80);
  86.     Ende := c = #27;
  87.     IF NOT Ende THEN BEGIN
  88.       IF c = #72 then
  89.         Find := PrevKey(DateiNr, Find);
  90.       IF c = #80 THEN
  91.         Find := NextKey(DateiNr, Find);
  92.       Seek(dFile, Find^.RecNo);  Read(dFile, d);
  93.     END;
  94.   UNTIL Ende;
  95.   Close(dFile);  WriteKette;  ClrScr;
  96. END.
  97. (* ------------------------------------------------- *)
  98. (*             Ende von IDXDEMO.PAS                  *)
  99.