ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »