Бинарные файлы
Способы считывания
Var f:text; n:integer;
Begin
Assignfile(f,’text.txt’);
Rewrite(f);
Writeln(f,’ 11 22 33 44 ‘);
Writeln(f,’ 55 66 77 88 ‘);
Close(f);
Способы:
1) способ
Reset(f);
While not eof(f) do begin
Read(f,n); write(n:4);
End;
2) Способ
While not seekEOF(f) do begin
Read(f,n); write(n:4);
End;
Writeln;
Close(f);
3) Способ
Reset(f);
While not eoln(f) do begin
Read(f,n); write(n:4);
End;
Writeln;
Closefile(f);
4)
Reset(f);
While not seekeoln(f) do begin
Read(f,n); write(n:4);
Writeln;
Closefile;
5) Способ
Reset(f);
While not eof do begin
While not eoln(f) do begin
Read(f,n); write(n:4);
End;
End;
Closefile(f);
6) Способ
Reset(f);
While not seekeof do begin
While not seekeoln(f) do begin
Read(f,n); write(n:4);
End;
Writeln;
End;
Closefile(f);
Пример: какой то там пример я нифига не запсиал ибо у меян шаблоны сбились.
Компонента занимает от 1 до 64 кбайт.
Процедуры и функции:
1) Procedure reset (var f:file [;n:word]);{Открывает бинарный файл для чтения по n байт}
2) Rewrite (var f:file [;N:word]);
3) Filesize(var f):longint {Разме файла в компанентах} {по умолчанию считается порция 128 байт}
4) Blockread (var f:file; var buf; cont:word; [var rez:word]) {Эта процедура считывает из файла F в буфер buf кол-во КОМПОНЕНТ count . параметр rez позволяет контролировать сколько компонент ьыло прочитано}
5) Blockwrite (var f:file; var buf; count:word; [var rez:word]);
Buf>=N*count (N- Размер компоненты)
Var i:integer; qaz:record;
G:integer;
M:string;
End;
F:file’
begin;
assignfile(f,’a.txt’);
rewrite(f);
for i:=1 to 10 do begin
readln(qaz.g);
readln(qaz.m);
blockwrite(f,qaz,1);
End;
Closefile(f);
End.
Program copyfile;
Var formF, ToF:file;
numRead,numwritten:word;
buf:array[1..512] of byte;
srt1,str2:string;
begin
assignfile(fromF,str1);
{sI-}
Reset(formf,1);
{$I+}
If ioresult<>0 then begin
Writeln(‘Файл-источник не найден’);
Halt;
End;
Assignfile(tof,str2);
Rewrite(tof,1);
Writeln(‘Копиуем’,filesize(formf),’байт ‘ );
Repeat
Blockread(fromF,buf,size(buf),numread);
Blockwrite(tof,buf,numread,numwriteln);
Unti (numread=0) or(numwriteln<>numread);
Closefile(fromF);
Closefile(tof);
End.
Для чего нужны бинарные файлы:
1) Работа с файлами для которой не важна природа данных хранящихся в файлах
2) Запись в файл только необходимой информации. Только те данные что информативны для нас. Эффективное храненнние данных
Var f:file; n:integer;
t:Boolean;
nomer:byte;
rec:record
group:integer;
memo:string:
end;
begin
nomer:=1;
assignfile(f,’b.txt’);
reset(f);
while not eof(f) do begin
t:=(nomer mod 2)=0
blockread(f,rec,1);
if t then begin
writeln(rec.group);
writeln(rec.memo);
end;
inc(nomer);
end;
closefile(f);
end.
Type TRec= record
Group:integer;
Name:string[30];
End;
Var f,f1:file;
Procedure writenew;
Var a:trec;
Len:byte;
Begin
Write (‘Номер’); readln(a.group);
Write(‘Имя’); readln(a.name);
Len:=length(a.name);
Reset(f,1);
Seek(f,filesize(f));
Blockwrite(f,a.group,4);
Blockwrite(f,len,1);
Blockwrite(f,a.name,len);
Close(f);
Var
Group:integer;
Meno:string;
I:byte;
F,f2:file;
Bb:Boolean;
Procedure writeff;
Begin
Reset(f,1);
Seek(f,filesize(f));
Readln(group); readln(memo);
Blockwrite (f,group,2);
Blockwrite(f,memo[o],1);
For i:=1 to length(memo) do
Blockwrite(f,memo[i],1);
End;
Procedure readff;
Begin
Reset(f,1);
Reset(f2,1);
Repeat
Blockread(f,group,2);
Blockread(f,memo[0],1);
Blockread(f,memo,ord(memo[0]));
Bb:=false;
For i:=1 to length(memo) do
If memo[i] in [‘0’..’9’]); then bb:=true;
If not bb then blockwrite(f2,memo,length(memo)+1);
Until eof(f);
End;