Программирование в среде Delphi. Часть 3. Файлы. Садовская О.Б. - 39 стр.

UptoLike

Составители: 

                                39
И сход н ый ф а йл: 14 8 -23 59 0 -18 31 67 24 52 -98 -45 -110
-37 -5 16 0 48 20 7




                      3.6 Н етипизированные ф айлы
      С т очки зрен ия Object Pascal, н етипизирова н н ый ф а йл пред ст а вля -
ет соб ой послед ова т ельн ост ь б а йтов, сод ерж а щих д а н н ые произвольн о-
го т ипа и стру кт у ры. Осн овн ое н а зн а чен ие н ет ипизирова н н ых ф а йлов
– об еспечен ие совм естим ости с лю б ым и т ипа м и ф а йлов и орга н иза -
ция высокоскоростн ого об м ен а д а н н ым и м еж д у вн еш н им и за пом и-
н а ю щим и у ст ройства м и и опера т ивн ой па м я т ью . Описа н ие н етипизи-
рова н н ого ф а йла f им еет вид :
                                        var f : file;
      В процед у ра х reset и rewrite д ля н ет ипизирова н н ых ф а йлов у ка -
зыва ется д ополн ительн ый па ра м етр RecSize, чт об ы за д а т ь ра зм ер за -
писи, использу ем ой при перед а че ф а йла :
      procedure reset (var f : file {; RecSize : word});
      procedure rewrite (var f : file {; RecSize : word});
      Е сли па ра м етр RecSize н е у ка за н , то прин им а ем а я по у м олча н ию
д лин а за писи ра вн а 128 б а йт а м . Длин а за писи изм еря ет ся в б а йт а х и
м ож ет б ыт ь за д а н а произвольн ым целым числом – от 1 б а йт а д о 2
Гб а йт. Е сли за д а т ь д лин у за писи, кра т н у ю 512 б а йт, то э т о позволит
выполн я т ь опера ции чтен ия -за писи д ля н ет ипизирова н н ого ф а йла с
м а ксим а льн ой скорост ью .
      За исклю чен ием процед у р read и write д ля н етипизирова н н ых
ф а йлов м ож н о использова т ь все ст а н д а рт н ые процед у ры, кот орые д о-
пу ска ет ся использова т ь д ля т ипизирова н н ых ф а йлов. В м есто процед у р
read и write использу ю т ся процед у ры blockread и blockwrite, позво-
ля ю щие пересыла ть д а н н ые с высокой скорост ью :
procedure blockread( var f : file; var buf; count : integer; {var at : integer});
procedure blockwrite( var f : file; var buf; count : integer; {var at : integer});
      Зд есь f – им я ф а йловой перем ен н ой, свя за н н ой с н ет ипизирова н -
н ым ф а йлом , buf – перем ен н а я , в кот ору ю б у д у т пом еща т ься д а н н ые
при чтен ии из ф а йла или из которой б у д у т извлека т ься д а н н ые при
за писи в ф а йл. Count – па ра м ет р целого т ипа , у ка зыва ю щий, ка кое