06.06.2013, 09:26 | #1 (permalink) |
Member
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Сделать программу работоспособной
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. |
06.06.2013, 09:26 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Проблема обязательно решится, а пока можете набраться информации побольше Ищу программу Из данной программы сделать программу с использованием процедур и функций Посоветуйте программу Есть желание сделать программу для поиска арбитражных ситуаций |
06.06.2013, 10:35 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Сандра, отлаживать Вашу программу я не возьмусь, ибо нет таких возможностей просто по времени, но один совет дам. Сталкивался с тем, что некоторые реализации Паскаля не переносят формата полей записи в виде свободных строк. Поэтому попробуйте добавить всюду длины, т.е. не string; а string[20]; и т.п.
|
07.06.2013, 11:22 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
Группа Фамилия Имя Отчество Стипендия 66 Iv Iv Iv 50 44 Pet Pet Pet 75 11 Sid Sid Sid 0 то есть прокрутил список до конца и не остановился, а Turbo Pascal - это: остановился, но накидал сверху какую-то хрень. Поскольку это всё CRT-шные рюшечки, которые я лично никогда не использую, заниматься ими не буду. Но в любом случае программа транслируется и работает. Так что Ваши проблемы - это какие-то задвиги реализаций трансляторов. Сочувствую. |
|
07.06.2013, 16:25 | #5 (permalink) |
Member
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Так у меня на таком TurboPascal DOS box тоже всё нормально работает, а на обычном уже как только непробовала всё время ругается.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
07.06.2013, 18:25 | #6 (permalink) | |
Member
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
07.06.2013, 18:44 | #7 (permalink) |
Member
Регистрация: 04.10.2012
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Я думаю ошибка где-то в этом куске, потому что я попробовала убрать программа заработала, но конечно не правильно. Подскажите кто-нибудь.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|