24.07.2013 Views

I. NEUTRIEDENÝ SÚBOR S PRIAMYM PRÍSTUPOM (HEAP ...

I. NEUTRIEDENÝ SÚBOR S PRIAMYM PRÍSTUPOM (HEAP ...

I. NEUTRIEDENÝ SÚBOR S PRIAMYM PRÍSTUPOM (HEAP ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

procedure ZapisHeap (var Subor:= TypHeap, Oblast: TypZaznamu,<br />

var Zapisany: boolean); {zapis vzdy na koniec suboru}<br />

{bez kontroly duplicity}<br />

begin<br />

with Subor↑, Hlava do<br />

begin<br />

Zapisany:= false;<br />

if PoslBlok = 0 then exit {subor je zaplneny}<br />

if AktBlok =/= PoslBlok then<br />

begin<br />

if AktBlok =/= 0 then ZapisBlok (Data, Buffer, AktBlok);<br />

CitajBlok (Data, Buffer, PoslBlok);<br />

AktBlok:= PoslBlok; {v bufferi blok, do ktoreho zapiseme}<br />

end; {nasleduje formovanie a zapis zaznamu}<br />

inc (PoslZaznam); AktZaznam:= PoslZaznam;<br />

Buffer.Zaznam [PoslZaznam]:= Oblast;<br />

Buffer.Platny [PoslZaznam]:= true;<br />

if PoslZaznam = PocZaz then {blok sa zaplnil}<br />

begin<br />

PoslBlok:= Buffer.DalsiVol {prechod na dalsi blok}<br />

Volny:=PoslBlok;<br />

Buffer.DalsiObs:= PoslBlok; PoslZaznam:= 0<br />

end;<br />

Zapisany:= true<br />

end<br />

end;<br />

procedure CitajHeap (var Subor: TypHeap; K: TypKluca;<br />

var Oblast: TypZaznamu; var Precitany: boolean);<br />

var i, Zarazka: integer;<br />

begin<br />

with Subor↑ do<br />

begin<br />

Precitany:= false;<br />

if Hlava.Obsadeny = 0 then exit {prazdny subor}<br />

with Hlava do<br />

if AktBlok = 0 then {Buffer prazdny}<br />

begin<br />

AktBlok:= Obsadeny;<br />

CitajBlok (Data, Buffer, AktBlok)<br />

end else<br />

begin<br />

ZapisBlok (Data, Buffer, AktBlok); {zachrana aktualneho pred prepisom}<br />

Zarazka:= AktBlok {bude cyklicka prehliadka blokov od AktBlok}<br />

end;<br />

+Heap.doc Strana 4 z 5

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!