Задача такая: Составьте программу, реализующую телефонную книгу. Каждая запись в книге включает фамилию, инициалы и три телефона (один домашний и два рабочих). Программа должна обеспечивать ввод и сохранение записей, вывод телефонов по введённой фамилии, а также вывод всех фамилий с указанием инициалов по введённому телефонному номеру.
Но у меня не выходит.
Код
program Telefonnaya_kniga;
uses crt;
const n=10;
type
book=record
first_name:string[20];
inis:string[5];
telrab1:shortInt;
telrab2:shortint;
teldom:shortint;
end;
Tel_Book=array[1..n] of book;
Ffile=file of Tel_Book; {файл для хранения базы}
var f:Ffile;
b:Tel_Book;
t,k,tel:shortint;
i:byte;
s:string;
begin
assign(f,'tel_book.txt');
writeln('Ввод данных-0; поиск-1; сохранение-2; возврат в меню-".."');
readln(t);
if t=0 then begin
append(f);
writeln('Ввод данных в телефонную книгу:');
while t<>'..' do
with b[i] do begin
write('Фамилия: ');
readln(first_name);
write('Инициалы: ');
readln(inis);
writeln('Домашний телефон: ');
readln(teldom);
writeln('Рабочий телефон 1: ');
readln(telrab1);
writeln('Рабочий телефон 2: ');
readln(telrab2);
writeln;
end;
write(f,b);
close(f);
end;
if t=1 then begin
reset(f);
while k<>'..' do
writeln('Поиск:')
writeln('по фамилии-0');
writeln('по телефону-1');
readln(k);
if k=0 then begin
writeln('Введите фамилию');
readln(s);
for i:=1 to n do
if s=b.first_name then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2);
end;
end;
if k=1 then begin
writeln('Введите телефон');
readln(tel);
for i:=1 to n do
if tel=b.teldom then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2);
if tel=b.telrab1 then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2);
if tel=b.telrab2 then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2);
end;
end;
close(f);
end;
readln;
end.
uses crt;
const n=10;
type
book=record
first_name:string[20];
inis:string[5];
telrab1:shortInt;
telrab2:shortint;
teldom:shortint;
end;
Tel_Book=array[1..n] of book;
Ffile=file of Tel_Book; {файл для хранения базы}
var f:Ffile;
b:Tel_Book;
t,k,tel:shortint;
i:byte;
s:string;
begin
assign(f,'tel_book.txt');
writeln('Ввод данных-0; поиск-1; сохранение-2; возврат в меню-".."');
readln(t);
if t=0 then begin
append(f);
writeln('Ввод данных в телефонную книгу:');
while t<>'..' do
with b[i] do begin
write('Фамилия: ');
readln(first_name);
write('Инициалы: ');
readln(inis);
writeln('Домашний телефон: ');
readln(teldom);
writeln('Рабочий телефон 1: ');
readln(telrab1);
writeln('Рабочий телефон 2: ');
readln(telrab2);
writeln;
end;
write(f,b);
close(f);
end;
if t=1 then begin
reset(f);
while k<>'..' do
writeln('Поиск:')
writeln('по фамилии-0');
writeln('по телефону-1');
readln(k);
if k=0 then begin
writeln('Введите фамилию');
readln(s);
for i:=1 to n do
if s=b.first_name then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2);
end;
end;
if k=1 then begin
writeln('Введите телефон');
readln(tel);
for i:=1 to n do
if tel=b.teldom then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2);
if tel=b.telrab1 then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2);
if tel=b.telrab2 then writeln(b.first_name,b.inis,b.teldom,b.telrab1,b,telrab2);
end;
end;
close(f);
end;
readln;
end.
И ещё вопрос: какой функцией воспользоваться, чтобы определить количество байтов, записанных в файл? FileSize - мне не помог. Нужна ли тут процедура FilePos?