![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
V@nix |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Народ помогите. Есть 2 файла 1 и 2, в 1-ом файле содержатся записи о книгах:
book= record
cod:integer;{шифр книги}
title:integer;{название книги}
ekz:byte;{кол-во книг в каталоге}
end;
В файле 2 - запись об абонементах: man=record
ncb:integer; {номер читательского билета}
{книги находящиеся у абонемента от 1 до 20 книг}
k:array[1..20] of atribut;
запись atribut выглядит так: atribut=record
shifr:integer;
when:integer;
dowhen:integer;
end;
Вопрос! Когда абонемент берет книгу то должны вносится изменения в запись book (файл №1). Изменяется кол-во книг текущей книги book.ekz. И шифр книги cod добавляется в запись man.k[i].shifr ... Как внести изменения в существующую запись (запись находится в файле)? |
![]() ![]() |
Free |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Решил писать в эту же тему. Думаю у меня будет несколько вопросов. Начну с первого. Итак, процедура create, которая создаёт новый файл и спрашивает у пользователя сколько готовить записей и соответсвенно считывает все поля с клавиатуры. Предположим у нас запись состоит из двух полей, вот фрагмент кода:
Код writeln('skolko zapisej gotovitj v novom faile?'); readln(n); ... for i:=0 to n do begin seek(f,i); clrscr; gotoxy(8,3); write('zapisj Nr:',i+1); gotoxy(6,4); write('A:'); {первое поле} ... {ввод поля А с клавиатуры} readln(X); rec.A:=X; gotoxy(6,5); write('B:'); ...{ввод поля В} readln(X); rec.B:=X; write(f,rec); write('to continue press any key); readkey; end; ... Вопрос правильно ли я всё написал, те ли операторы использовал, будет ли моя задумка реализована? |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата(Free @ 28.05.05 18:44) процедура create, которая создаёт новый файл и спрашивает у пользователя сколько готовить записей и соответсвенно считывает все поля с клавиатуры. В принципе - правильно, но есть кое-что "лишнее"... ...
for i:=0 to n do begin
seek(f,i); { если файл только что был создан - это не нужно }
...
end;
Если убрать Seek то при записи в файл указатель будет перемещаться автоматически... И второе - зачем делать readln(X);
rec.B:=X;
когда можно прямо: readln( rec.B );
|
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 17:53 |