Бинарные файлы

Способы считывания

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;