home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 01 / praxis / browse.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1988-10-20  |  2.6 KB  |  67 lines

  1. (* ------------------------------------------------------------------------- *)
  2. (*                                BROWSE.PAS                                 *)
  3. (*            File-Browser als Demoprogramm für SCROLL-Unit                  *)
  4. (*                                                                           *)
  5. (*              (c) 1988   TOOLBOX  &  Karsten Gieselmann                    *)
  6. (* ------------------------------------------------------------------------- *)
  7.  
  8. {$R-,S-,I-,V-,B-,N-}  (* keine Fehlerprüfung, größtmögliche Geschwindigkeit! *)
  9.  
  10. PROGRAM Browse;
  11.  
  12. USES
  13.   Crt, Scroll;                                            (* benötigte Units *)
  14.  
  15. VAR
  16.   Buffer     : ARRAY [1..1000] OF ^STRING;           (* Puffer für Textdatei *)
  17.   TextFile   : TEXT;
  18.   Lines, Key : WORD;
  19.  
  20. {$F+}                  (* wichtig: Ausgaberoutine im FAR-Modell kompilieren! *)
  21.  
  22. PROCEDURE WriteLine(Col,Row : BYTE; Index : LONGINT);
  23.          (* gibt das k-te Listenelement an der Fensterposition (Col,Row) aus *)
  24. BEGIN
  25.   GotoXY(Col,Row);
  26.   Write(Buffer[Index]^);
  27. END;
  28.  
  29. {$F-}
  30.  
  31.  
  32. PROCEDURE ReadTextFile(VAR Lines : WORD);   (* liest Textdatei in Puffer ein *)
  33. VAR
  34.   s : STRING[79];           (* automatische Längenbegrenzung auf 79 Zeichen! *)
  35. BEGIN
  36.   Lines := 0;
  37.   WHILE NOT EOF(TextFile) DO BEGIN
  38.     Inc(Lines);
  39.     FillChar(s[1], 79, #32);               (* mit Leerzeichen vorbesetzen... *)
  40.     ReadLn(TextFile, s);
  41.     s[0] := #79;                                        (* ...und auffüllen! *)
  42.     GetMem(Buffer[Lines], Succ(Length(s)));
  43.     Move(s, Buffer[Lines]^, Succ(Length(s)));       (* dynamisch abspeichern *)
  44.   END;
  45. END;
  46.  
  47. {$I UTILITY.INC}                    (* Einbinden verschiedener Hilfsroutinen *)
  48.  
  49. BEGIN
  50.   IF ParamCount <> 0 THEN BEGIN                      (* Parameter angegeben? *)
  51.     Assign(TextFile, ParamStr(1));
  52.     Reset(TextFile);
  53.     IF IOResult = 0 THEN BEGIN                            (* Datei gefunden? *)
  54.       CursorOff;
  55.       ReadTextFile(Lines);
  56.       SetupScrollArea(Lines, @WriteLine, NIL);         (* ganzer Bildschirm! *)
  57.       Key := $4700;                              (* Home: Dateianfang zeigen *)
  58.       WHILE NOT Aborted DO BEGIN
  59.         ScrollResponse(Key);                          (* Datei durchblättern *)
  60.         Key := GetKey;
  61.       END;
  62.       TextMode(LastMode);
  63.     END ELSE WriteLn('Datei nicht gefunden!')
  64.   END ELSE WriteLn('Kein Parameter angegeben!');
  65. END.
  66. (* ------------------------------------------------------------------------- *)
  67. (*                        Ende von BROWSE.PAS                                *)