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

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

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

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


Новичок
*

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

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


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


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


Знаток
****

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

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


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

при чтении


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


Гость






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


Знаток
****

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

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


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


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


Новичок
*

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

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


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


Гуру
*****

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

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


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

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


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


Знаток
****

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

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


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

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


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bokul
сообщение 3.01.2007 23:05
Сообщение #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

 



- Текстовая версия 20.07.2025 2:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"