Склейка символов таблиц.
program FixTab;

(******************************************)
(* Программа фиксирует внутренние пробелы *)
(* в строке, заменяя их двоичными  нулями *)
(******************************************)

type
      StringType = string [$FF];

const
      TempName = '$$$$$$$$.$$$';

var
      F, G                   : text;
      I                      : byte;
      Line, Head, Tail, Body : StringType;

begin
      LowVideo;

      if ParamCount <> 2
      then
           begin
                 WriteLn ('Укажите в параметре ввода имена входного и');
                 WriteLn ('выходного файлов, которые могут совпадать.');
                 Exit
           end;

      Assign (F, ParamStr (1));

      if Pos (':', ParamStr (2)) <> 2
      then Assign (G, TempName)
      else Assign (G, Copy (ParamStr (2), 1, 2) + TempName);

      Reset (F);
      Rewrite (G);

      while not Eof (F)
      do
         begin
               ReadLn (F, Line);
               I := 0;

               while (I < Length (Line)) and (Line [Succ (I)] <= ' ')
               do I := Succ (I);

               Head := Copy (Line, 1, I);
               I := Length (Line);

               while (I > 0) and (Line [I] <= ' ')
               do I := Pred (I);

               Tail := Copy (Line, Succ (I), Length (Line) - I);
               Body := Copy (Line, Succ (Length (Head)), I - Length (Head));

               for I := 1 to Length (Body)
               do
                  if Body [I] = ' '
                  then Body [I] := #00;

               Line := Head + Body + Tail;
               WriteLn (G, Line);
               WriteLn (Line)
         end;

      Close (F);
      Close (G);

      Assign (F, ParamStr (2));
(*$I-*)
      Erase (F);
(*$I+*)
      I := IoResult;
      Rename (G, ParamStr (2));

      if WhereX <> 1
      then WriteLn;

      WriteLn ('Ok!');
      Exit
end.
381