Sandra 2000 |
06.06.2013 09:26 |
Сделать программу работоспособной
Вложений: 2
У меня возникла проблема с модулем и с основной программой.(Turbo Pascal)
1-я ошибка, когда компоную модуль(Error 22:Structure too large) в массиве (см.1 картинка). Исправляю до 1..50 элементов модуль компонуется. Всё нормально.
Потом перехожу в программу.(Error 3:Unknown identifier)там где я использую AddStud (см.2 картинка)
В чём проблема? Помогите, пожалуйста разобраться.
Да,ещё самое интерсное когда запускаю в Turbo Pascal(ДосБокс)всё нормально после исправления в модуле. А когда в Turbo Pascal обычном так вот получается. Но мне нужно именно на последнем чтобы работало.
Модуль
Код:
unit module;
interface
uses crt;
type TRec=record
numGroup:string[50];
lastName:string;
name:string;
otchestvo:string;
grunt:string;
end;
procedure okno;
procedure clr;
procedure createFile(filename:string);
function filefound(filename: string): boolean;
procedure AddStud(filename:string);
procedure printStud(filename:string);
implementation
procedure okno;
begin
window (12,7,65,20);
TEXTBACKGROUND(11);
CLRSCR;
textcolor(0);
window (13,7,65,20);
clrscr;
end;
procedure clr;
begin
clrscr;
window(0,0,80,40);
TEXTBACKGROUND(0);
clrscr;
TEXTCOLOR(15);
window(0,0,80,40);
clrscr;
end;
function filefound(filename: string): boolean;
var
f:file of TRec;
begin
{$i-}
assign(f,filename);
reset(f);
close (f);
{$i+}
filefound:=(ioresult=0);
end;
procedure createFile(filename:string);
var
f: file of TRec;
begin
assign(f, filename);
rewrite(f);
close(f);
end;
procedure AddStud(filename:string);
var f:file of TRec;
stud: TRec;
Astud:array[1..100] of Trec;
key:char;
k,i:integer;
begin
assign(f,filename);
Reset(f);
i:=1;
while(not eof(f)) do
begin
read(f, stud);
inc(i);
Astud[i].numGroup:= stud.numGroup;
Astud[i].lastName:= stud.lastName;
Astud[i].name:= stud.name;
Astud[i].otchestvo:= stud.otchestvo;
Astud[i].grunt:= stud.grunt;
end;
close(f);
k:=i;
repeat
clrscr;
okno;
inc(i);
writeln('Введите группу:');
readln(Astud[i].numGroup);
writeln('Введите фамилию:');
readln(Astud[i].lastName);
writeln('Введите имя:');
readln(Astud[i].name);
writeln('Введите отчество:');
readln(Astud[i].otchestvo);
writeln('Введите сумму стипендии (в гривнах) или 0 если студент без стипендии');
readln(Astud[i].grunt);
writeln('Для выхода нажмите <ESC> и любую клавишу для продолжения');
key:=readkey;
until ord(key)=27;
rewrite(f);
seek(f,filesize(f));
k:=i;
for i := 1 to k do
begin
write(f,Astud[i]);
end;
close(f);
clr;
end;
procedure printStud(filename:string);
var
f: file of TRec;
stud: TRec;
j:byte;
begin
j:=0;
okno;
assign(f, filename);
reset(f);
while(not eof(f)) do
begin
begin
read(f, stud);
if (stud.numGroup<>'')then
begin
writeln('Группа - ', stud.numGroup);
writeln('Фамилия - ', stud.lastName);
writeln('Имя - ', stud.name);
writeln('Отчество - ', stud.otchestvo);
writeln('Стипендия - ', stud.grunt);
inc(j);
end;
if (j = 3) then
begin
writeln('Для вывода следующей страницы нажмите любую клавишу');
j:=0;
readkey;
clrscr;
end;
end;
end;
close(f);
end;
end.
Программа
Код:
Program Pract;
uses crt, module;
var
f:file of TRec;
filename:string;
r:integer;
key:char;
ch:char;
k:integer;
begin
repeat
clrscr;
okno;
writeln('1. Создать файл');
writeln('2. Добавить в файл информацию о студентах');
writeln('3. Вывести информацию из файла на экран');
writeln('ESC - выход');
ch:=readkey;
case ch of
'1': begin
clrscr;
okno;
writeln('Укажите полное имя файла');
readln(filename);
createFile(filename);
writeln('Файл ',filename,' успешно создан');
writeln('Для продолжения нажмите любую клавишу...');
end;
'2': begin
clrscr;
okno;
writeln('Укажите полное имя файла');
readln(filename);
if(not (filefound(filename))) then
begin
textcolor(12);
writeln('Ошибка! Файл ',filename, 'Не найден');
textcolor(15);
writeln('Создать файл с текущим именем? y - да, N - нет');
ch:=readkey;
case ch of
'Y','y','Н','н':begin
createFile(filename);
writeln('Файл ',filename,' успешно создан');
writeln('Для продолжения нажмите любую клавишу...');
end;
'N','n','Т','т':begin
end;
end;
end
else
begin
AddStud(filename);
end;
end;
'3': begin
clrscr;
okno;
writeln('Укажите полное имя файла');
readln(filename);
if(not (filefound(filename))) then
begin
textcolor(12);
writeln('Ошибка! Файл ',filename, 'Не найден');
textcolor(15);
writeln('Для продолжения нажмите любую клавишу...');
readkey;
end
else
printStud(filename);
writeln('Для продолжения нажмите любую клавишу...');
readkey;
end;
end;
until(ord(ch) = 27);
end.
|