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 ...
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