26.12.2011, 21:45 | #1 (permalink) |
Member
Регистрация: 16.12.2011
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Типизированные файлы
Вот я сделала но оно не то что нужно выводит ( Код:
program Project2; {$APPTYPE CONSOLE} uses SysUtils; var fail: file of integer; i,n,k,cum:integer; begin write ('vvedit kilkist elementiv faily:'); readln(n); assign (fail,'fail1'); rewrite (fail); for i:=1 to n do begin write('vvedit ',i,'-i element faily:'); readln(k); write(fail,k); end; reset (fail); while not eof(fail) do begin read (fail,k); write (k,' '); end; readln; close (fail); write ('element jakui treba dodatu y kinec faily:'); readln (cum); rewrite (fail); seek (fail,filesize(fail)); write (fail,cum); close (fail); reset (fail); while not eof(fail) do begin read (fail,k); write (k,' '); end; close(fail); readln; end. |
26.12.2011, 21:45 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Безусловно стоит уделить немного внимания на аналогичные темы Паскаль, типизированные файлы, помогите доделать Файлы |
27.12.2011, 20:46 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
По-моему, тут вот что, хотя на 100% не уверен, поскольку сам типизированными файлами практически не пользуюсь и знаю их плохо. Команда Seek, сколь мне известно, не может использоваться для записи, а только для чтения. В то же время команда Rewrite полностью очищает содержимое файла, что Вы и видите. А поэтому записать что-либо в конец типизированного файла невозможно в принципе (если не так, надеюсь, знатоки поправят). Отсюда два варианта решения задачи:
1. С типизированным файлом. Тут придется после первой записи сделать считывание всего содержимого файла (например, в массив), потом добавить в массив дополнительный элемент и полностью файл перезаписать. Это так: Код:
program Project2; {$APPTYPE CONSOLE} uses SysUtils; var fail: file of integer; A:Array[1..100] of integer; i,n,k,cum:integer; begin write ('vvedit kilkist elementiv faily:'); readln(n); assign (fail,'fail1'); rewrite (fail); for i:=1 to n do begin write('vvedit ',i,'-i element faily: '); readln(k); write(fail,k); end; reset (fail); i:=1; while not eof(fail) do begin read (fail,k); A[i]:=k; write (k,' '); inc(i); end; readln; close (fail); write ('element jakui treba dodatu y kinec faily: '); readln (cum); A[n+1]:=cum; rewrite (fail); for i:=1 to n+1 do write(fail,A[i]); close (fail); reset (fail); while not eof(fail) do begin read (fail,k); write (k,' '); end; close(fail); readln; end. Код:
program Project2; {$APPTYPE CONSOLE} uses SysUtils; var fail: Text; i,n,k,cum:integer; begin write ('vvedit kilkist elementiv faily: '); readln(n); assign (fail,'fail1'); rewrite (fail); for i:=1 to n do begin write('vvedit ',i,'-i element faily: '); readln(k); writeln(fail,k,' '); end; close (fail); reset (fail); while not eof(fail) do begin readln(fail,k); write(k,' '); end; readln; close (fail); write ('element jakui treba dodatu y kinec faily: '); readln (cum); append (fail); writeln(fail,cum); close (fail); reset (fail); while not eof(fail) do begin readln(fail,k); write(k,' '); end; close(fail); readln; end. |
27.12.2011, 20:53 | #3 (permalink) | |
Member
Регистрация: 16.12.2011
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|