1. Заголовок или название темы должно быть информативным ! 2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК ! 4.НЕ используйте форум для личного общения! 5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Вопрос! Когда абонемент берет книгу то должны вносится изменения в запись book (файл №1). Изменяется кол-во книг текущей книги book.ekz. И шифр книги cod добавляется в запись man.k[i].shifr ... Как внести изменения в существующую запись (запись находится в файле)?
Начал отладку программы, появились некоторые проблемы. 1)
{редактирует запись, номер котрой вводит пользователь} procedure FEdit(var f:filetype; var fileopen:boolean) var i:integer; rec:DC {DC - тип record} begin write('Nomer zapisi: '); readln(i); if (i<=filesize(f)) and (i>=1) then begin seek(f,i-1);
{gotoxy(6,5); write('A:', rec.A, ' '); {тут должен происходить вывод всех полей в редактируемой записи}
И вместо того чтобы выводить нормально все поля в записи на экране появляется какая-то белеберда, в чём ошибка? 2)
{сортировать информацию по цене белета} procedure FSortByPrice(var f:filetype); var i, j:integer; rec1, rec2, rec:DC; begin for i:=0 to filesize(f)-1 do for j:=i+1 to filesize(f) do seek(f,i); write(f,rec1); seek(f,j); write(f,rec2); if (rec1.cena<rec2.cena) then begin rec:=rec1; rec1:=rec2; rec2:=rec; read(f,rec1); {неуверен, что надо так} read(f,rec2); {неуверен, что надо так} end; ..... {вывод содержимого файла на экран в отсортированном виде} for i:=1 to filesize(f) do begin seek(f,i-1); read(f,rec); textcolor(green); gotoxy(1, 4+i); ClrEol; gotoxy(1, 4+i); write(i:2,'. '); gotoxy(6, 4+i); write(rec.Izbrauc); gotoxy(16, 4+i); write(rec.No); gotoxy(30, 4+i); write(rec.Iebrauc); gotoxy(38, 4+i); write(rec.Uz); gotoxy(44, 4+i); write(rec.cena:5:2); end; readkey; end;
опять же при выводе на экран выводится белеберда и ещё по-моему добовляются лишние записи. 3)
{найти информацию по указанному полю} procedure FFind(var f:filetype); var i:integer; rec:DC; str:string; begin write('Vvedite nazvanie knigi: '); readln(str); .... i:=0;
for i:=0 to filesize(f) do seek(f,i); read(f,rec);{Error 100: Disk read error} if rec.A=str then {сравниваем информацию в поле А с введённой} begin {если поля совпадают выводим на экран запись} gotoxy(1, 9+i); ClrEol; gotoxy(1, 9+i); write(i:2,'. '); gotoxy(7, 9+i); write(rec.A); gotoxy(22, 9+i); write(rec.B); gotoxy(37, 9+i); write(rec.C); gotoxy(61, 9+i); write(rec.D); gotoxy(72, 9+i); write(rec.E); end; ReadKey; end;