home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / FIELDIO.ZIP / CNVRTHLP.PAS next >
Encoding:
Pascal/Delphi Source File  |  1988-02-15  |  4.8 KB  |  134 lines

  1. program CnvrtHlp;
  2.  
  3. {  This program will take a text file of and convert it to a help file  }
  4. {  a return will be included where ever the next line starts with a '.' }
  5. {  or a space.  Lines beginning with '{' will be ignored.  When the     }
  6. {  program detects a blank line, a new help screen will be started.     }
  7. {  The text file MUST have a blank line at the end for the program to   }
  8. {  terminate successfully. If you are using the option to place a # at  }
  9. {  the end of a help screen, to place the screen number in the lower    }
  10. {  right hand corner of the screen, be sure to end the screen with a    }
  11. {  period, and be sure there are as many spaces between the period and  }
  12. {  the '#' to hold your entire reference mark (Max. 15).  Also, this    }
  13. {  program will not work correctly if the '#' is on a line by itself,   }
  14. {  unless it is preceeded by NO spaces. }
  15.  
  16. type
  17.   TextRec = record
  18.               NextRec : longint;
  19.               case byte of
  20.                 0 : (Text : string [123]);
  21.                 1 : (Header : array [0 .. 30] of longint);
  22.                 end;
  23.  
  24. var
  25.   OldHelpFile : text;
  26.   OldHelpStr  : String;
  27.   NewHelpFile : file of TextRec;
  28.   Head, Help  : TextRec;
  29.   OldHelpName,
  30.   NewHelpName : string [63];
  31.   HelpStr     : string;
  32.   NewRec,
  33.   HeaderRec,
  34.   PrevRec     : word;
  35.   HelpNum     : byte;
  36.  
  37. begin
  38.   write ('Enter the name of the old help file: ');
  39.   readln (OldHelpName);
  40.   write ('Enter the name of the new help file: ');
  41.   readln (NewHelpName);
  42.   assign (OldHelpFile, OldHelpName);
  43.   assign (NewHelpFile, NewHelpName);
  44.   reset (OldHelpFile);
  45.   rewrite (NewHelpFile);
  46.   HelpNum := 1;
  47.   HeaderRec := 0;
  48.   HelpStr := '';
  49.   PrevRec := 0;
  50.   fillchar (Head, sizeof (Head), 0);
  51.   write (NewHelpFile, Head);
  52.   while (not EOF (OldHelpFile)) do begin
  53.     Readln (OldHelpFile, OldHelpStr);
  54.     if OldHelpStr > ''
  55.       then begin
  56.         if OldHelpStr [1] <> '{'
  57.           then begin
  58.             if (HelpStr <> '') and
  59.                ((OldHelpStr [1] = ' ') or (OldHelpStr [1] = '.'))
  60.               then begin
  61.                 HelpStr := HelpStr + #13;
  62.                 if OldHelpStr [1] = '.'
  63.                   then delete (OldHelpStr, 1, 1);
  64.                 end;
  65.             while (length (OldHelpStr) > 0) and
  66.                   (OldHelpStr [length (OldHelpStr)] = ' ') do
  67.               delete (OldHelpStr, length (OldHelpStr), 1);
  68.             if OldHelpStr [length (oldHelpStr)] = '.'
  69.               then OldHelpStr := OldHelpStr + '  '
  70.               else OldHelpStr := OldHelpStr + ' ';
  71.             HelpStr := HelpStr + OldHelpStr;
  72.             while length (HelpStr) > 123 do begin
  73.               NewRec := filesize (NewHelpFile);
  74.               if PrevRec = 0
  75.                 then Head.Header [HelpNum] := NewRec
  76.                 else begin
  77.                   Help.NextRec := NewRec;
  78.                   Seek (NewHelpFile, PrevRec);
  79.                   write (NewHelpFile, Help);
  80.                   end;
  81.               Help.Text := copy (HelpStr, 1, 123);
  82.               Help.NextRec := 0;
  83.               PrevRec := NewRec;
  84.               seek (NewHelpFile, NewRec);
  85.               write (NewHelpFile, Help);
  86.               delete (HelpStr, 1, 123);
  87.               end;                          { while length (HelpStr ..  }
  88.             end;                            { if OldHelpStr [1] ..      }
  89.         end                                 { if OldHelpStr >           }
  90.       else begin
  91.         if (HelpStr > '  ') or (Length (HelpStr) > 2)
  92.           then begin
  93.             NewRec := filesize (NewHelpFile);
  94.             if PrevRec = 0
  95.               then Head.Header [HelpNum] := NewRec
  96.               else begin
  97.                 Help.NextRec := NewRec;
  98.                 Seek (NewHelpFile, PrevRec);
  99.                 write (NewHelpFile, Help);
  100.                 end;
  101.             fillchar (Help, sizeof (Help), 0);
  102.             Help.Text := HelpStr;
  103.             PrevRec := NewRec;
  104.             seek (NewHelpFile, NewRec);
  105.             write (NewHelpFile, Help);
  106.             write ('.');
  107.             end;                            { if HelpStr > '  '     ..  }
  108.         HelpStr := '';
  109.         fillchar (Help, sizeof (Help), 0);
  110.         inc (HelpNum);
  111.         if (HelpNum > 30) and not EOF (OldHelpFile)
  112.           then begin
  113.             PrevRec := HeaderRec;
  114.             HeaderRec := filesize (NewHelpFile);
  115.             Head.NextRec := HeaderRec;
  116.             seek (NewHelpFile, PrevRec);
  117.             write (NewHelpFile, Head);
  118.             write ('*');
  119.             fillchar (Head, sizeof (Head), 0);
  120.             seek (NewHelpFile, HeaderRec);
  121.             write (NewHelpFile, Head);
  122.             HelpNum := 0;
  123.             end;
  124.         PrevRec := 0;
  125.         end;
  126.     end;
  127.   seek (newHelpFile, HeaderRec);
  128.   write (NewHelpFile, Head);
  129.   writeln ('*');
  130.   close (OldHelpFile);
  131.   close (NewHelpFile);
  132.   end.
  133.  
  134.