IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> чтение из файла
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Михаил

Репутация: -  0  +


Помогите исправить ошибку. Когда читаешь из файла во время работы программы то все вроде нормально, но когда выйдешь из нее и запустишь заново, то программа отказывается читать из него и либо зависает, либо выдает ошибку с кодом 203.


Прикрепленные файлы
Прикрепленный файл  pack.zip ( 1.64 килобайт ) Кол-во скачиваний: 159
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


ты его не закрываешь добавь close(f);

при чтении


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
ты его не закрываешь
И что? Файл, открытый через Reset, может и НЕ закрываться, ничего страшного (в виде потери данных) не будет...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


я поставил close и у меня при повторном запуске вылетать перестала.


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Михаил

Репутация: -  0  +


Добавил close(f) и только все равно в процедуре Insert_List на месте new(pList) ошибку 203 выдает. И еще почему-то после неудачного чтения фаил увеличивается в размере с 1Kb до 23Mb. С чем это связано?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


У тебя она (Insert_List) совсем не правильна. Объясни назначение переменных lp,pList,pStart:pEl_list.
Как я понял
pList - вспомогательная, лучше не делать глобальной
lp - указывает на последний элемент списка
pStart - на первый, ее можно и нужно убрать

И вообще лучше комментируй код.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


слушай, парень, помоему у тебя ваапще стек не правильно реализован, ты залезь в FAQ, есть неплохая работа со списками и стеками smile.gif авось поможет

Все о динамических структурах данных.


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Не знаю как стек, но список точно не правильно.. smile.gif
Вот рабочий вариант, разбирайся.

program MIFI;

uses crt;

Const
p_menu:array[1..4] of string[30]=(
'1.‘®§¤ вм д ©« Ё бЇЁб®Є',
'2.Џа®зЁв вм д ©« Ё§ бЇЁб®Є ',
'3.‚лў®¤ бЇЁбЄ ­ нЄа ­',
'4.‚л室');

type
list_d=record
Title:string[20];
Nm,Pt,data,pol:string[15];
mesto,adres:string[30];
end;

ff=file of list_d;

pEl_list=^list;
list=record
li:list_d;
next:pEl_list;
end;

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 SaveBase_in_file;
var
FileName:string;
k:char;
begin
FileName:='wer.bas';
Assign(f,FileName);
Rewrite(f);
repeat;
with li do begin
writeln('‚ў®¤ЁвҐ бЇЁб®Є:':25);
write('” ¬Ё«Ёп: ');
readln(Title);
write('€¬п: ');
readln(Nm);
write('ЋвзҐбвў®: ');
readln(Pt);
write('„ в ஦¤Ґ­Ёп: ');
readln(data);
write('Џ®«: ');
readln(pol);
write('ЊҐбв® а Ў®вл: ');
readln(mesto);
write('„®¬ и­Ё© ¤аҐб: ');
readln(adres);
end;
write(f,li);
writeln('…бвм ҐйҐ бўҐ¤Ґ­Ёп ¤«п бЇЁбЄ ?');
readln(k);
until k='n';
close(f);
writeln('„ ­­лҐ б®еа ­Ґ­л. Ќ ¦¬ЁвҐ «оЎго Є« ўЁиг.');
readkey;
end;

procedure List_creat;
begin
Init;
Assign(f,'wer.bas');
reset(f);
while not EoF(f) do begin
read(f,li);
Insert_list(li);
end;
close(f);
end;

procedure List_displ;
Var i:integer;
begin
i:=1;
plist:=lp;
writeln('‘ЇЁб®Є Ў®­Ґ­в®ў Ё¬ҐойЁебп ў д ©«Ґ');
while plist<>nil do begin
write(i,' ');
write(lp^.li.Title+' ');
write(lp^.li.Nm+' ');
write(lp^.li.Pt+'; ');
write(lp^.li.data+'; ');
write(lp^.li.pol+'; ');
write(lp^.li.mesto+'; ');
writeln(lp^.li.adres);
plist:=plist^.next;
i:=i+1;
end;
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;

begin
while true do begin
clrscr;
menu(nomermenu);
case nomermenu of
1:begin clrscr;
writeln('„®«¦Ґ­ д®а¬Ёа®ў вмбп бЇЁб®Є');
SaveBase_in_file;
end;
2:begin clrscr;
{if pStart=nil then begin }
writeln('Џа®зЁв ©вҐ ¤ ­­лҐ Ё§ д ©« ');
List_creat;
readln; end;
3:begin clrscr;
List_displ;
readln;
end;
4:begin clrscr;
writeln('‚л е®вЁвҐ г­Ёз⮦Ёвм бЇЁб®Є - y or n?':36);
readln(ch);
if ch='y' then DeleteList;
halt;
end;
end;
end;
end.



--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 17:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name