Как правильно объявить в модуле переменную, тип данных которой описан в основной программе? - Pascal
Формулировка задачи:
Как обратиться из модуля к записе, которая определена в программе?
Например, есть такой код основной программы:
И есть такой модуль, в котором используется тип данных, описанный в основной программе:
Выдаёт ошибку: неизвестное имя TSubsciber.
Пробовал разные варианты и ничего не помогло. Как правильно объявить в модуле переменную, тип данных которой описан в основной программе?
uses add_sub1;
type
TSubscriber = record
public
surname : string[20];
tel : LongInt;
end;
var s : TSubscriber;
begin
s.surname := 'asdf';
s.tel := 1234;
ad_rec(s);
end.unit add_sub1;
interface
procedure ad_rec(new_s : TSubscriber);
implementation
procedure ad_rec(new_s : TSubscriber);
var f : file of TSubscriber;
begin
end;
end.Решение задачи: «Как правильно объявить в модуле переменную, тип данных которой описан в основной программе?»
textual
Листинг программы
unit add_sub1;
interface
uses my_record;
procedure ad_rec(new_s : TSubscriber);
implementation
procedure ad_rec(new_s : TSubscriber);
var s : TSubscriber;
f : file of TSubscriber;
begin
assign(f,'type_file.dat');
reset(f); // открытие уже существующего
while not eof(f) do begin
read(f,s);
if(s.tel = new_s.tel) then write('Телефоны совпадают');
end;
write(f,new_s);
close(f);
end;
end.
Объяснение кода листинга программы
- Создание переменной
new_sтипаTSubscriberдля хранения новой записи в процедуреad_rec(new_s : TSubscriber). - Объявление локальных переменных:
sтипаTSubscriberдля временного хранения записи из файла.fтипаfile of TSubscriberдля работы с файлом.
- Присвоение переменной
fзначения 'type_file.dat' с помощью процедуры assign(f,'type_file.dat'), что указывает на файл типаTSubscriber. - Открытие файла для доступа к его содержимому с помощью процедуры reset(f).
- Цикл чтения записей из файла и проверки на совпадение номеров телефонов, если совпадение найдено, выводится сообщение
Телефоны совпадают. - Запись новой записи
new_sв файл с помощью процедуры write(f,new_s). - Закрытие файла с помощью процедуры close(f).