Работа с текстовым файлом

Модуль

Задача:

  Разработать модуль, подключение которого позволяет записывать и удалять символ в любом месте файла типа TEXT, по положению указателя.

Описание:

  В модуле 4 процедуры, которые вызываются без параметров: открытие файла, удаление символа из указанного места, вставка символа в файл(вводится символ и позиция указателя) и закрытие файла.
Также смотри демонстрационную программу для этого модуля.

Код:


unit wwfmodul;
 interface
 uses crt;
  var f: text;
    err,c: integer;
    ch,s1: char;
    b: byte;
    str:string;
    i,j,n: integer;
    Buf : Array [1..4095] Of Char;
  Procedure DelChar;
  Procedure InputChar;
  Procedure OpenFile;
  Procedure CloseFile;
 implementation
  Procedure OpenFile;
   begin
    repeat
     Write('Введите путь к файлу: ');
     Readln(str);
     Assign(F, str);
     {$I-}
     Reset(f);
     err:=IOResult;
     if err<>0 then begin
          writeln('Файл '+str+' не существует!');
          readkey;
          end;
     {$I+}
    until (err=0) and (length(str)>0);
     end;
  Procedure CloseFile;
   begin
   Close(f);
   end;
  Procedure InputChar;
   label m1,m2,m3;
   begin
   Write('Введите позицию указателя:');
   Readln(i);
   Write('Введите символ:');
   Readln(s1);
   Reset(f);
   While not Eof(f) do begin
   inc(n);                    {Считаем число символов в файле}
   Read(f,Buf[n]);            {Сохраняем все символы в массив}
   end;
   if i > n then goto m1;     {если вставляемый символ за границей файла переход на м1}
   for c:= 0 to n-i do        {вставка символа в массив}
   Buf[n-c+1]:= Buf[n-c];
   Buf[i]:=s1;
   goto m2;
m1:
   Append(f);                 {запись в конец файла}
   Write(f,s1);
   goto m3;
m2:
   Rewrite(f);                {запись со вставленным символом}
   for c:= 1 to n do
   Write(f,Buf[c]);
m3:
   n:=0;
   end;
  Procedure DelChar;
  label m4;
   begin
   Write('Введите позицию указателя:');
   Readln(i);
   Reset(f);
   While not Eof(f) do begin
   inc(n);                     {Считаем число символов в файле}
   Read(f,Buf[n]);             {Сохраняем все символы в массив}
   end;
   if i > n then goto m4;      {если указатель за границей файла, то выход}
   for c:= i to n-1 do         {иначе изменение массива}
   Buf[c]:=Buf[c+1];
   Rewrite(f);
   for c:= 1 to n-1 do         {и запись его без последнего символа}
   Write(f,Buf[c]);
m4:
   n:=0;
   end;
end.




Hosted by uCoz