Другие языки программирования и технологии

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

как дописать строку в конец типизированного файла
вот прога ,но в ней вместо дозаписи удаляется
та строка которая была в ней и записывается
та которая должна быть в конце
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). Ясно, в какую сторону работать?
Куат Акимов
Куат Акимов
77 611
Лучший ответ
Во-первых: 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;
посмотри эту программу, вводи, например, строку 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.
Сергей Пузько
Сергей Пузько
95 933

Похожие вопросы