Помогите исправить ошибку. Когда читаешь из файла во время работы программы то все вроде нормально, но когда выйдешь из нее и запустишь заново, то программа отказывается читать из него и либо зависает, либо выдает ошибку с кодом 203.
arhimag
3.01.2007 22:46
ты его не закрываешь добавь close(f);
при чтении
volvo
3.01.2007 22:55
Цитата
ты его не закрываешь
И что? Файл, открытый через Reset, может и НЕ закрываться, ничего страшного (в виде потери данных) не будет...
arhimag
3.01.2007 23:03
я поставил close и у меня при повторном запуске вылетать перестала.
Venom
4.01.2007 2:16
Добавил close(f) и только все равно в процедуре Insert_List на месте new(pList) ошибку 203 выдает. И еще почему-то после неудачного чтения фаил увеличивается в размере с 1Kb до 23Mb. С чем это связано?
Bokul
4.01.2007 2:43
У тебя она (Insert_List) совсем не правильна. Объясни назначение переменных lp,pList,pStart:pEl_list. Как я понял pList - вспомогательная, лучше не делать глобальной lp - указывает на последний элемент списка pStart - на первый, ее можно и нужно убрать
И вообще лучше комментируй код.
arhimag
4.01.2007 2:51
слушай, парень, помоему у тебя ваапще стек не правильно реализован, ты залезь в FAQ, есть неплохая работа со списками и стеками авось поможет
var lp,pList:pEl_list; f:ff; li:list_d; noswap:Boolean; ch:char; i,oi,kol,nomermenu:integer;
procedure init; begin lp:=nil; end;
procedure DeleteList; begin while lp<>nil do begin pList:=lp; lp:=lp^.next; Dispose(pList); end; end;
procedure Insert_list(el:list_d); begin new(pList); with pList^ do begin li.Title:=el.Title; li.Nm:=el.Nm; li.Pt:=el.Pt; li.data:=el.data; li.pol:=el.pol; li.mesto:=el.mesto; li.adres:=el.adres; next:=lp;; end; lp:=pList; end;
procedure MENU(var nomermenu:integer); var x,y,i:integer; c:char; begin x:=28; y:=1; gotoXY(x,8); textcolor(13); writeln(' ‚лЎҐаЁвҐ ЇгЄв ¬Ґо: '); textcolor(3); for i:=1 to 4 do begin gotoXY(x,i+8); writeln(p_menu[i]); end; textcolor(4); gotoXY(x,y+8); writeln(p_menu[y]); while true do begin c:=readkey; case ord( c ) of 80:if y<4 then y:=y+1; 72:if y>1 then y:=y-1; 13:break; end; gotoXY(x,8); textcolor(13); writeln(' ‚лЎҐаЁвҐ ЇгЄв ¬Ґо: '); textcolor(3); for i:=1 to 4 do begin gotoXY(x,i+8); writeln(p_menu[i]); end; textcolor(4); gotoXY(x,y+8); writeln(p_menu[y]); end; nomermenu:=y; textcolor(white); end;