Št 22 Mar 2007
Keď sa deklaruje premenná pre súbor, povie sa aj jeho typ – napríklad nasledujúci program uloží písmeno A do súboru znaky.dat.
Tento súbor sa prepíše, ak už existuje, keďže sa vytvoril pomcou príkazu **Rewrite**.
/—code pascal
program DataFiles;
var
f: file of Char; {f bude subor z Char-ov}
b: Char;
begin
Assign(f,’znaky.dat’); {priradenie nazvu suboru preemennej}
Rewrite(f); {vytvorenie alebo prepisanie suboru}
b := ‘A’;
Write(f,b); {zapisanie premennej b do suboru}
Close(f); {ukoncenie prace so suborom – zavretie}
end.
\—
Pre čítanie zo súboru je možné použiť príkaz **read** (pozor, nie **readln**!) a príkaz **seek** – ktorý mení pozíciu v súbore. **Začiatok súboru má index (číslo) 0**.
Nasledujúci program otvorí súbor a prečíta prvý znak.
/—code pascal
program DataFiles;
var
f: file of Char; {f bude subor z Char-ov}
b: Char;
begin
Assign(f,’znaky.dat’); {priradenie nazvu suboru preemennej}
Reset(f); {otvorenie datoveho suboru}
Seek(f,0); {presun na zaciatok suboru}
Read(f,b); {nacitanie zo suboru f do premennej b}
Writeln(b); {vypisanie obsahu b na obrazovku}
Close(f); {ukoncenie prace so suborom – zavretie}
end.
\—
Pozícia v súbore sa dá zistiť príkazom **FilePos(f)**, celková veľkosť príkazom **FileSize(f)** a teda napríklad prečítanie celého súboru a jeho výpis na obrazovku bude vyzerať nasledovne.
/—code pascal
program DataFiles;
var
f: file of Char; {f bude subor z Char-ov}
b: Char;
begin
Assign(f,’znaky.dat’); {priradenie nazvu suboru premennej}
Reset(f); {otvorenie datoveho suboru}
while FilePos(f) <> FileSize(f) do
{pokial nie je pozicia v subore rovna velkosti suboru}
begin
Read(f,b); {nacitaj z f ho b}
Writeln(b); {vypis obsah b na obrazobku}
end;
Close(f); {uzavri subor}
end.
\—
Niekedy je potrebné zmazať zvyšok súboru od aktuálnej pozície – používa sa na to príkaz **Truncate(f)**;
Nasledujúci program vymaže zo súboru všetko za pozíciou tri.
/—code pascal
program DataFiles;
var
f: file of Char; {f bude subor z Char-ov}
b: Char;
begin
Assign(f,’znaky.dat’); {priradenie nazvu suboru premennej}
Reset(f); {otvorenie datoveho suboru}
Seek(f,3); {prechod na poziciu tri}
Truncate(f); {“odstrihnutie zvysku”}
Close(f); {uzavri subor}
end.
\—