Дозапись в типизированный файл паскаль

дозапись в типизированный файл паскаль
как дописать строку в конец типизированного файла
вот прога ,но в ней вместо дозаписи удаляется
та строка которая была в ней и записывается
та которая должна быть в конце
var f:file of string;
...s:string;
begin
assign(f,'text.txt');// одна строка уже записана
reset(f);//открываем файл чтобы дозаписать вторую строку
read(s);// вводим строку которую нужно дописать в конце
seek(f,filepos(f));// смещаем указатель за строку уже записанную в файле
write(f,s);//записываем вторую строку в конец файла
end;
где тут лажа не пойму
на компьютерных форумах "забили" на эту тему
сами наверно не знают))

  • seek(f,filepos(f)); никуда ничего не смещает, поскольку указатель в f и так находится на позиции filepos(f). Ясно, в какую сторону работать?
  • посмотри эту программу, вводи, например, строку 12345
    uses crt;
    var f:file of string;
    s:string;
    begin
    assign(f,'text.txt');// одна строка уже записана
    rewrite (f); //открываем для записи
    write (f,'ssssssss'); //запись в файл
    write (f,'dddddddd');
    write (f,'ffffffff');
    close(f);
    reset(f);//открываем файл чтобы дозаписать вторую строку
    writeln('vvesti stroku ');
    readln(s);// вводим строку которую нужно дописать в конце
    seek (f,3); //установка позиции на начало файла
    write(f,s);//записываем вторую строку в конец файла
    close(f);
    reset(f);
    while not EOf (f) do //пока не конец файла
    begin
    read (f,s); //считываем данные в переменную типа zap
    writeln(s) end;
    end.
  • Во-первых: file of string это text
    Во-вторых: для типа
    text определено дополнительное действие на открытие для добавления append

    Т.е. из вышесказанного:

    var
      Txt : Text;
      Str : String;
      …
    begin
      …
      { Связываем имя файла с файловой переменной }
      Assign(Txt, 'text.txt');
      …
      Str := 'First string';
      { Создаём текстовый файл }
      Rewrite(Txt);
      { Записываем строку }
      WriteLn(Txt, Str);
      { Закрываем }
      Close(Txt);
      …
      Str := 'Second string';
      { Открываем для добавления }
    Append(Txt);
      { Записываем строку }
      WriteLn(Txt, Str);
      { Закрываем }
      Close(Txt);
      …
      { Открываем для чтения }
      Reset(Txt);
      { Читаем }
      while Not EOF(Txt) do
        begin
          ReadLn(Txt, Str);
          WriteLn(Str);
        end;
      { Закрываем }
      Close(Txt);
      …
    end;