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

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

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

> Работа с файлами
sergey_baltazavr
сообщение 8.11.2011 15:02
Сообщение #1





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

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


Ребят, подскажите почему падает?
program file_operation_TWO;
uses crt;

{----------------opisanie peremennux--------------------------------}
type
tovar = record {opredelyem strukturu dannyx TOVARA}
name : string;
cost : real;
num : integer;
end;

var
F1: file of tovar;
s : array[0..100] of tovar;
s1 : tovar;
c : char;
mas:array[0..100] of real;
ch : integer;
n : integer;
{-------------------------------------------------------------------}




{------------------1-procedura vvoda s klaviatury i zapis v massiv-------------------------}
procedure out_mas;

begin
ch:=0;
writeln('1) Vvod c klaviatury veshestvennyx chisel i zapis v file->>>');
writeln('');
repeat
write('Input name: ');
readln(s[ch].name);

write('Input cost: ');
read(s[ch].cost);

write('Input number: ');
readln(s[ch].num);

writeln('');
{ writeln(s[ch].cost);
writeln(s[ch].name);
writeln(s[ch].num);
} ch:=ch+1;
write('Okonchit vvod? y/n: ');
readln©;
until c = 'y';
n:=ch;
writeln('N=',n);

end;
{---------------------------------------------------------------------}

{-----------------2-procedura zapisi massiva v file-------------------------}
procedure out_fil;
var
file_name : string;
begin
file_name:='o123';
ch:=0;
assign(F1, file_name);
rewrite(f1);
reset(F1);
writeln('2) Zapis massiva v file->>>');
writeln('');
repeat
write(F1,s[ch]);
ch:=ch+1;

until ch<n;
end;
{---------------------------------------------------------------------}


{-------------------3-procedura dopolneniy file--------------------------}
procedure dop_fil;
var
file_name : string;
dstr : string;

i,code:integer;
begin
writeln('');
writeln('3) Dopolnenie file->>>');
ch:=0;
code:=0;
file_name:='o123';
assign(F1, file_name);
reset(F1);
writeln('Vvedite dannye dly dopolneniy v file: ');
{---}
write('Input name: ');
readln(s1.name);

write('Input cost: ');
readln(s1.cost);

write('Input number: ');
readln(s1.num);
{---}
write(F1,s1);
close(F1)
end;
{---------------------------------------------------------------------}



{-------------------4-procedura chteniy iz file i vyvod na ekran------}
procedure in_fil;
var
file_name : string;

i,code:integer;
begin
writeln('');
writeln('4) Chtenie iz file i vyvod na ekran->>>');
ch:=0;
code:=0;

file_name:='o123';
assign(F1,file_name);
writeln('qqqqqqqq'); readkey;
{-----ERRORS!--------}

{---------------------}
repeat
read(F1,s1); {padaeettttt!!!!!!}
readkey;
writeln('Name: ',s1.name);
writeln('Cost: ',s1.cost);
writeln('Number: ',s1.num);

until Eof(F1);
close(F1)
end;
{---------------------------------------------------------------------}



{------------------------ocnovnay programma-----------------------------}
begin
{sohranenie dannyx}
clrscr;

out_mas;
readkey;

out_fil;
readkey;

dop_fil;
readkey;

in_fil;
writeln('');
writeln('Press any key...');
readkey;

end.



Сообщение отредактировано: sergey_baltazavr - 8.11.2011 15:04


--------------------
Коперник — знакомая фамилия. Что он сделал?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Krjuger
сообщение 9.11.2011 1:04
Сообщение #2


Профи
****

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

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


Ну и где здесь " Практика продвинутого программирования".
Вопрос. Вторая процедура,где закрытие файла?.
Затем,Reset открывает файл и устанавливает указатель в начало файла.В итоге каждый раз ты будет добавляя новую строку затирать первую.
Зачем делать Rewrite и следом тут же Reset???(2 процедура)
А падает она у тебя в 4 процедуре потому что assign есть,а где Reset?????Я бы на твоем месте нафиг избавился от всех этих процедур. Твои коментарии не соответствуют дейстительности.Циклы я бы все таки использовал на твоем месте либо For либо while, в зависимости от потребностей.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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