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

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

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

> Перезапись строки типизированного файла
Анжелика
сообщение 29.05.2006 11:32
Сообщение #1


Новичок
*

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

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


Всем привет! Ребят, помогите мне, пжл, изменить задачу. Тема такая: есть типизированный файл записей. Нужно изменить одну из записей этого файла. Программу я написала(см. код), но вот меняет она следующую строку, а не нужную. Подскажите, mega_chok.gif что надо изменить?
unit exch;
interface
uses crt,delit;
type
osn=
record
gr:string;
fio:string;
sub:string;
dt:string;
pare:byte;
les:char;
pr:string;
end;
osnFile=file of osn;
procedure exchange;
implementation
{-------------------------------------------}
procedure del(var osnF:osnFile; i:integer);
var
temp:osnFile;
zap:osn;
k:integer;
begin
assign(temp,'temp.txt');
rewrite(temp);
seek(osnF,0);
k:=0;
repeat
read(osnF,zap);
if k<>i-1 then
write(temp,zap);
inc(k);
until eof(osnF);
rewrite(osnF);
seek(temp,0);
repeat
read(temp,zap);
write(osnF,zap);
until eof(temp);
close(temp);
erase(temp);
end;
{-------------------------------------------}
procedure exchange;
var name:string;
main,temp:osnFile;
tzap:osn;
l,i,k:integer;
par:byte;
lesson:char;
begin
clrscr;
write('Введите имя основного файла'); readln(name);
assign(main,name); reset(main);
writeln('Записи основного файла:');
k:=0;
repeat
inc(k);
read(main,tzap);
writeln(k,'. '+tzap.gr+' '+tzap.fio+' '+tzap.sub+' '+tzap.dt+' ',
tzap.pare,' '+tzap.les+' '+tzap.pr);
until eof(main);
write('Введите номер записи:');
readln(i);
seek(main,i-1);
read(main,tzap);
writeln;
clrscr;
writeln('Выбранная запись: '+tzap.gr+' '+tzap.fio+' '+tzap.sub+' '+tzap.dt+' ',
tzap.pare,' '+tzap.les+' '+tzap.pr);
writeln('Какое поле необходимо редактировать?');
writeln('1-Группа');
writeln('2-Фамилия И.О.');
writeln('3-Предмет');
writeln('4-Дата');
writeln('5-Номер пары');
writeln('6-Тип занятия');
writeln('7-Присутствие');
readln(l);
write('Введите новое значение, выбранного поля:');
case l of
1:begin readln(name); tzap.gr:=name end;
2:begin readln(name); tzap.fio:=name end;
3:begin readln(name); tzap.sub:=name end;
4:begin readln(name); tzap.dt:=name end;
5:begin readln(par); tzap.pare:=par end;
6:begin readln(lesson); tzap.les:=lesson end;
7:begin readln(name); tzap.pr:=name end;
end;
writeln('Записать изменения?(Y/N)');
readln(name);
if (name='y') or(name='Y')
then
begin
del(main,i);
write(main,tzap)
end
else
writeln('Запись не изменена');
writeln('Для продолжения нажмите Еnter');
readkey;
end;
end.

Заранее спасибо! yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Бродяжник
сообщение 30.05.2006 8:29
Сообщение #2


Бывалый
***

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

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


И что куда сдвинется? Поясните, plz.
program exchg;
uses crt;
var f: file of byte;
i,b: byte;
begin

clrscr;

{-- creating the file --}

assign(f,'proba');
rewrite(f);

for b:=1 to 10 do write(f,b);

{-- reporting the file size --}

writeln('File size = ', FileSize(f));

close(f);

reset(f);

{-- reading one record --}

seek(f,4);
read(f,b);

writeln('Byte read: ',b);

{-- changing it's value --}

b := 128;

{-- rewriting the record --}

seek(f,4);
write(f,b);

writeln('Byte written: ',b);

{-- reading the record again --}

seek(f,4);
read(f,b);

writeln('Byte read again: ',b);

{-- again reporting the file size --}

writeln('File size after changing = ', FileSize(f));

{-- listing all records --}

reset(f);

for i:=1 to FileSize(f) do
begin
read(f,b);
writeln('(',i:2,')',b:4);
end;

close(f);

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



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