Mildred
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте, уважаемые знатоки. При запуске программы паскаль выводит ошибку №126 (файлы должны иметь параметры VAR). В процедуре эти 2 файла указаны именно через параметры-переменные. Паскаль АBC вообще никакой ошибки не видит, а вот обычный BP что-то не устраивает. Помогите, пожалуйста, разобраться. Вот код (программа на стадии разработки, поэтому за другие ошибки не ручаюсь) : Код: program kurs_test; uses crt; const n=15; type test=record quest:string; var1:string; var2:string; var3:string; nom_pp:byte; end; vector=array[1..n] of test; fltst=file of test; rezlt=file of string; var t:vector; {масив записiв усiх питань} i,j,k,vyb:byte; tst:fltst; rzlt:rezlt; testname,rezult:string; procedure new_t(a:vector; m:byte; var f:fltst; r:rezlt; tname,rez:string); var i,k:byte; begin writeln('Ведiть назву тесту:'); readln(tname); assign(f,tname); rewrite(f); for i:=1 to m do begin seek(f,filesize(f)); clrscr; with a[i] do begin writeln('Введiть питання:'); readln(quest); writeln('Введiть варiант 1:'); write('1. '); readln(var1); writeln('Введiть варiант 2:'); write('2. '); readln(var2); writeln('Введiть варiант 3:'); write('3. '); readln(var3); nom_pp:=i; end; write(f,a[i]); end; close(f); assign(r,rez); rewrite(r); writeln('Введiть кiлькiсть можливих результатiв тесту:'); readln(k); for i:=1 to k do begin seek(r,filesize(r)); writeln('Введiть результат тесту ',i,':'); readln(rez); write(r,rez); end; close(r); end; procedure play_t(var f:fltst; r:rezlt; tname,rez:string); var td:test; mn:set of byte; x:byte; {номер варiанта вiдповiдi} a,v1,v2,v3:byte; {к-ть вiдповiдей вiдповiдних варiантiв} rname:string; begin assign(f,tname); seek(f,0); mn:=[1..15]; v1:=0; v2:=0; v3:=0; for i:=1 to 15 do begin a:=random(15)+1; if a in mn then begin read(f,td); clrscr; writeln('Визначення методу найкращого сприймання iнформацiї'); with td[i] do begin writeln(quest); writeln('1. ',var1); writeln('2. ',var2); writeln('3. ',var3); writeln; writeln; writeln; writeln('Оберiть, будь ласка, варiант вiдповiдi'); repeat readln(x); until (x=1) or (x=2) or (x=3); case x of: 1:v1:=v1+1; 2:v2:=v2+1; 3:v3:=v3+1; end; end; mn:=mn-a; end; end; close(f); writeln('Ви успiшно пройшли тест. Введiть, будь ласка, своє прiзвище:'); {оброблення результатiв тесту} readln(rname); if (a>b) and (a>c) then begin rewrite(r,rname); seek(r,1); read(r,rez); writeln(rez); end; else if (b>a) and (b>c) then begin rewrite(r,rname); seek(r,2); read(r,rez); writeln(rez); end; else if (c>a) and (c>b) then begin rewrite(r,rname); seek(r,3); read(r,rez); writeln(rez); end; else begin rewrite(r,rname); seek(r,4); read(r,rez); writeln(rez); end; close(r); procedure open_r(var r:filedate; rez:string); var rname:string; begin clrscr; writeln('Для вiдкриття файлiв з результатами введiть, будь ласка, Ваше прiзвище:'); readln(rname); writeln('Результати проходження тесту для ',rname,':'); assign(r,rname); while not (eof(r)) do begin reset(r); read(r,rez); write(rez); end; close(r); end; function menu:byte; var k:byte; begin clrscr; writeln('Створити новий тест'); writeln('Пройти тест'); writeln('Подивитись результати'); writeln('Вихiд'); writeln; writeln; writeln; writeln('Оберiть, будь ласка'); read(k); menu:=k; end; begin repeat vyb:=menu; case vyb of 1:new_t(t,n,tst,rzlt,testname,result); 2:play_t(n,tst,rzlt,testname,result); 3:open_r(rzlt,result); end; until vyb=4; {$i-} close(tst); close(rzlt); {$i+} end. | П.С. ошибка возникает на 18-й строке "procedure new_t(a:vector; m:byte; var f:fltst; r:rezlt; tname,rez:string);" | Всего записей: 2 | Зарегистр. 30-05-2010 | Отправлено: 12:33 30-05-2010 | Исправлено: Mildred, 12:40 30-05-2010 |
|