home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 03 / colleg / col389_2.lst
Encoding:
File List  |  1988-12-13  |  2.7 KB  |  82 lines

  1.  
  2. {------------------------------------------------------------
  3.           Pascal Colleg " Dateien" Beispielprogramm
  4.    Numerieren aller nichtleeren Zeilen einer Programmdatei
  5.                    Version Turbo Pascal 3.0
  6.                  (C) 1989 TOOLBOX & W.J.Weber
  7. ------------------------------------------------------------}
  8.  
  9.  
  10. PROGRAM ZeilenNumerieren(Input,Output);           {Kopfzeile}
  11.  
  12. VAR Quelle,Ziel: Text;   {Globale Variable vom Typ Textdatei}
  13.  
  14. {-----------------------------------------------------------}
  15.  
  16. PROCEDURE WaehleDatei;
  17. VAR Dateiname : String[12];                      { lokale }
  18.     Fehlercode: Integer;                         { Variable }
  19.  
  20. BEGIN                         { Anweisungsteil der Prozedur }
  21.  
  22.   (*$I-*);                      { Verhindert Laufzeitfehler }
  23.                                 { falls Datei nicht existent}
  24.   REPEAT
  25.     Write('Welche Datei soll bearbeitet werden? Name: ');
  26.     ReadLn(Dateiname);
  27.     IF Pos('.PAS',Dateiname)=0 THEN       {Endung .PAS fehlt}
  28.       Dateiname:=Concat(Dateiname,'.PAS');    { .PAS anfügen}
  29.     Assign(Quelle,Dateiname);
  30.     Reset(Quelle);
  31.     Fehlercode:=IOResult;
  32.     IF Fehlercode>0 THEN
  33.       Writeln('Datei nicht gefunden. Neue Eingabe machen!')
  34.   UNTIL Fehlercode=0;
  35.  
  36.   (*$I+*);
  37.  
  38.   WriteLn('Die Zeilen von ',Dateiname,' werden numeriert.');
  39.  
  40. END;              { Ende der Prozedurdefinition WaehleDatei }
  41.  
  42. { Die Datei Quelle bleibt geöffnet und wird von der folgenden
  43.      Prozedur weiterbenutzt. }
  44.  
  45. {-----------------------------------------------------------}
  46.  
  47. PROCEDURE NumeriereDatei;
  48. VAR Zeile: String[255];                          { lokale }
  49.     N    : 1..MaxInt;                            { Variable }
  50.  
  51. BEGIN                         { Anweisungsteil der Prozedur }
  52.   N:=0;
  53.   Assign(Ziel,'LISTING.TXT');
  54.   Rewrite(Ziel);
  55.   WHILE NOT EOF(Quelle) DO
  56.     BEGIN
  57.       ReadLn(Quelle,Zeile);
  58.       IF Length(Zeile)>0 THEN
  59.         BEGIN
  60.           N:=succ(N);
  61.           Writeln(Ziel,'(*',N:3,' *) ',Zeile);
  62.           Write('.')     {Schreibt für jede bearb. Textzeile}
  63.         END                     {einen Punkt auf Bildschirm }
  64.       ELSE WriteLn(Ziel)                {Übertrage Leerzeile}
  65.     END; { WHILE-Schleife }
  66.   Close(Quelle);
  67.   Close(Ziel);
  68.   WriteLn;
  69.   WriteLn('Die neue Datei LISTING.TXT enthält ',N,' Zeilen.')
  70. END;           { Ende der Prozedurdefinition NumeriereDatei }
  71.  
  72. {-----------------------------------------------------------}
  73.  
  74. BEGIN                   { Anweisungsteil des Hauptprogramms }
  75.   ClrScr;
  76.   WriteLn('Numerieren der Zeilen einer Pascal-Programmdatei');
  77.   WriteLn('------------------------------------------------');
  78.   WriteLn;
  79.   WaehleDatei;
  80.   NumeriereDatei
  81. END.
  82.