home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* IDXDEMO.PAS *)
- (* (c) 1990 Horst Zein & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM IndexDemo;
-
- USES
- Crt, Index;
-
- TYPE
- Daten = RECORD
- Nr : LONGINT;
- Name : STRING [20];
- END;
-
- VAR
- c : CHAR;
- d : Daten;
- dFile : FILE OF Daten;
- DateiNr : BYTE;
- Ende, Exist : BOOLEAN;
-
- BEGIN
- ClrScr;
- DateiNr := 3;
- GotoXY(28, 1); Write('*** Erfassungs - Demo ***');
- GotoXY(11, 5); Write('Nummer :');
- GotoXY(11, 7); Write('Name :');
- Assign(dFile, 'DATEN.DAT');
- {$I-}
- Reset(dFile);
- {$I+}
- IF IOResult > 0 THEN
- Rewrite(dFile); { Neuanlage bei 1. Lauf }
- Assign(Kette, 'DATEN.IDX');
- ReadKette;
- Ende := FALSE;
- REPEAT
- GotoXY(26,15); ClrEol; Write('Nummer = 0 --> Ende');
- GotoXY(21, 7); ClrEol;
- GotoXY(21, 5); ClrEol; ReadLn(d.nr);
- Ende := d.nr = 0;
- IF NOT Ende THEN BEGIN
- Exist := FindKey(DateiNr, d.nr); { Suche erfolgreich? }
- IF Exist THEN BEGIN
- Seek(dFile, Find^.RecNo);
- Read(dFile, d);
- GotoXY(51, 7); Write('alt : ', d.name);
- GotoXY(26,15); Write('0 --> Satz löschen ');
- END;
- GotoXY(21, 7); ReadLn(d.name);
- IF d.name = '0' THEN
- DelKey(DateiNr, Find) { find steht auf akt. Satz }
- ELSE BEGIN
- IF NOT Exist THEN BEGIN
- s.RecNo := FileSize(dFile);
- s.Key := d.nr;
- AddKey(DateiNr, s); { nachdem s gefüllt wurde }
- END ELSE
- s.RecNo := Find^.RecNo;
- WHILE Length(d.Name) < 20 DO { für Ausgabe mit }
- d.Name := d.Name + ' '; { Space auffüllen }
- Seek(dFile, s.RecNo); Write(dFile, d);
- END;
- END;
- UNTIL Ende;
-
- GotoXY(28, 1); Write ('*** Satzausgabe - Demo ***');
- Find := Root[DateiNr]; { Init. nötig }
- Seek(dFile, Find^.RecNo); Read(dFile, d);
- GotoXY(6, 15);
- Write(Chr(24):5, ' --> voriger Satz',
- chr(25):5, ' --> nächster Satz',
- 'ESC' :7, ' --> Ende');
- REPEAT
- GotoXY(21, 5); ClrEol; Write(d.Nr);
- GotoXY(21, 7); ClrEol; Write(d.Name);
- REPEAT
- c := ReadKey;
- IF c = #0 THEN
- c := ReadKey
- ELSE IF c <> #27 THEN
- c := #0;
- UNTIL (c = #27) OR (c = #72) OR (c =#80);
- Ende := c = #27;
- IF NOT Ende THEN BEGIN
- IF c = #72 then
- Find := PrevKey(DateiNr, Find);
- IF c = #80 THEN
- Find := NextKey(DateiNr, Find);
- Seek(dFile, Find^.RecNo); Read(dFile, d);
- END;
- UNTIL Ende;
- Close(dFile); WriteKette; ClrScr;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von IDXDEMO.PAS *)