ВУЗ:
Составители:
Рубрика:
33
Рассмотрим типовые алгоритмы обработки типизированного файла
1. Добавить запись S в конец файла f:
reset(f);
seek(f, filesize(f)); {установление указателя за последним элементом
файла}
vv(s); {вызов процедуры ввода записи с клавиатуры}
write(f,s); {запись в файл компонент s}
close(f); {закрытие файла}
Каждое множество данных типизированного файла f состоит из записи
какого-либо типа.
2. Изменить запись s c ключом, равным k в файле f
reset(f);
while (not eof(f)) or (s.key<>k) do
begin
read(f,s); {считывается текущая запись}
if s.key<>k then writeln(′запись не найдена′);
else begin {указатель уже стоит на следующей записи}
seek (f, filepos(f)-1); {вернуться на запись назад}
writeln(′ввод названия города′);
readln(s,name);
write(f,s); {изменяем в записи с ключом к название города }
end; {переход к следующей записи файла}
end;
3. Стереть в файле запись с ключом k.
Необходимо файл f без записи с ключом key=k перенести во времен-
ный файл g, связанный с именем T.REC. затем f стереть, а файл g
переименовать, если запись найдена (PR=TRUE).
writeln (′вводим имя файла′);
readln(name);
assign(f,′name′);
PR=false;
assign(g, ′T.REC.′);
rewrite(g);
reset(f);
while not eof(f) do begin
read(f,s);
if s.key<>k then write(g,s)
else begin PR:=TRUE; {запись можно высветить на экране и спро-
сить подтверждение для удаления. Если
следует оставить, то записать write(g,s)}
34
end;end;
close(f);
close(g);
if PR then begin erase(f) {стереть f}
rename(g, name); {переименование файла}
end;
else {в файле f нет записи с ключом k }
begin writeln(′запись не существует′)
erase(g); {уничтожаем копию}
end.
4. Пропуск одного компонента файла
seek (f,filepos(F)+1);
5. Установка указателя на начало
seek(f,0)
Пример:
Сформировать файл следующей структуры: почтовый индекс, название
города, число жителей. Предусмотреть дополнение новых сведений в файл,
изменение названия города, числа жителей. Используя сформированный
файл вывести на печать сведения о городах миллионерах.
uses crt;
type stadt=record
zip,zahl:longint;
name:string[30];
end;
fil=file of stadt;
st=string[15];
var f:fil;b:boolean;nam:st;
procedure vv(var z:stadt); {процедура ввода одной записи}
begin
write(′ввод почтового индекса. Для выхода наберите -1′);
readln(z.zip);
if z.zip>0 then begin
write(′ввод названия города′); readln(z.name);
write(′ввод числа жителей′); readln(z.zahl)
end; end;
procedure sosd(var g:fil;nam:st); {процедура создания файла}
var z:stadt;
Рассмотрим типовые алгоритмы обработки типизированного файла end;end;
close(f);
1. Добавить запись S в конец файла f: close(g);
reset(f); if PR then begin erase(f) {стереть f}
seek(f, filesize(f)); {установление указателя за последним элементом rename(g, name); {переименование файла}
файла} end;
vv(s); {вызов процедуры ввода записи с клавиатуры} else {в файле f нет записи с ключом k }
write(f,s); {запись в файл компонент s} begin writeln(′запись не существует′)
close(f); {закрытие файла} erase(g); {уничтожаем копию}
Каждое множество данных типизированного файла f состоит из записи end.
какого-либо типа. 4. Пропуск одного компонента файла
seek (f,filepos(F)+1);
2. Изменить запись s c ключом, равным k в файле f
reset(f); 5. Установка указателя на начало
while (not eof(f)) or (s.key<>k) do seek(f,0)
begin
read(f,s); {считывается текущая запись}
if s.key<>k then writeln(′запись не найдена′);
else begin {указатель уже стоит на следующей записи}
seek (f, filepos(f)-1); {вернуться на запись назад} Пример:
writeln(′ввод названия города′); Сформировать файл следующей структуры: почтовый индекс, название
readln(s,name); города, число жителей. Предусмотреть дополнение новых сведений в файл,
write(f,s); {изменяем в записи с ключом к название города }
изменение названия города, числа жителей. Используя сформированный
end; {переход к следующей записи файла}
end; файл вывести на печать сведения о городах миллионерах.
uses crt;
3. Стереть в файле запись с ключом k. type stadt=record
Необходимо файл f без записи с ключом key=k перенести во времен- zip,zahl:longint;
ный файл g, связанный с именем T.REC. затем f стереть, а файл g name:string[30];
переименовать, если запись найдена (PR=TRUE). end;
fil=file of stadt;
writeln (′вводим имя файла′);
st=string[15];
readln(name);
var f:fil;b:boolean;nam:st;
assign(f,′name′);
procedure vv(var z:stadt); {процедура ввода одной записи}
PR=false;
begin
assign(g, ′T.REC.′);
write(′ввод почтового индекса. Для выхода наберите -1′);
rewrite(g);
readln(z.zip);
reset(f);
if z.zip>0 then begin
while not eof(f) do begin
write(′ввод названия города′); readln(z.name);
read(f,s);
if s.key<>k then write(g,s) write(′ввод числа жителей′); readln(z.zahl)
else begin PR:=TRUE; {запись можно высветить на экране и спро- end; end;
сить подтверждение для удаления. Если procedure sosd(var g:fil;nam:st); {процедура создания файла}
следует оставить, то записать write(g,s)} var z:stadt;
33 34
Страницы
- « первая
- ‹ предыдущая
- …
- 15
- 16
- 17
- 18
- 19
- …
- следующая ›
- последняя »
