3 typy souborů v Pascalu:
· typový soubor (file of typ)
· netypový soubor (file)
· textový soubor (text)
vždy vazba na externí (diskový) soubor
dynamická velikost, počet komponent není určen deklarací (lze přidávat a rušit informace v souboru)
paměťové nároky - typový a netypový 128 bajtů, textový 256 (vlastní data jsou na disku!)
položky stejného typu (typový - libovolný kromě file a nesmyslný je pointer, netypový - byte; textový - char)
položky stejného typu (libovolného kromě typu soubor)
přístupná 1 položka (ukazovátko)
Popis: file of typ (typ=typ prvku)
var
F: file of integer; A:integer;
G: file of OSOBA; B: OSOBA; (kde type OSOBA=record ... end)
přiřazuje proměnné jméno externího souboru S
S - řetězec se specifikací diskového souboru, maximální délka 79 znaků
F - jakýkoli soubor, nesmí být otevřen
propojení trvá tak dlouho, dokud se neprovede další assign se stejnou proměnnou
otevře existující soubor
F - libovolný soubor, musí být přiřazena externímu souboru procedurou assign (neexistence souboru - chyba; soubor otevřen - uzavření a znovuotevření)
ukazatel na první položku
ze souboru lze číst a lze do něj zapisovat
vytvoří a otevře nový soubor
existence souboru - obsah se vymaže
otevřený soubor - uzavření, znovuvytvoření a otevření
takto otevřený soubor je vždy prázdný
ukazatel na začátek
lze číst i zapisovat
čtení položek ze souboru F do proměnných v seznamu (musí být odpovídajícího typu) od ukazatele
ukazatel za poslední načtenou hodnotou
pokus o čtení na konci - chyba
zápis hodnot výrazů do souboru od ukazatele (případné existující položky se přepisují)
ukazatel za poslední zapsanou položku
uzavře otevřený diskový soubor
F - libovolný soubor otevřený jakkoli
dokončí zápisové operace, jméno proměnné může být spojeno s dalším souborem
raději uzavírat ikdyž to není potřeba (např. při ukončeníé programu se soubory uzavírají automaticky)
test na konec souboru
sekvenční zpracování - vždy je nutné projít všechny předchozí složky a zbytečně načítat, nelze se vracet
přímý přístup - ukazatel lze přemístit na libovolnou položku (položky jsou očíslovány, čísluje se od nuly)
================================================================================
přemístí ukazatel na položku P
F - nesmí být typu text; musí být otevřen
vrací aktuální polohu ukazatele
F - nesmí být typu text, musí být otevřen
vrací počet složek uložených do souboru
F - nesmí být text, musí být otevřen
zruší (vymaže) všechny položky od aktuální polohy ukazatele do konce souboru
F - libovolný soubor, musí být otevřen
aktuální poloha se stane koncem souboru
vymaže soubor z disku
F - libovolný soubor, musí mít přiřazeno jméno, nesmí být otevřen
přejmenuje externí soubor na disku
F - libovolný soubor, musí být přiřazen externímu souboru, nesmí být otevřen
S - řetězec - nové jméno souboru (assign)
test úspěšnosti operace vstupu/výstupu
vrací celočíselnou hodnotu (0 - bez chyby, >0 - číslo chyby) - stav poslední provedené operace vstupu/výstupu
příslušná část programu musí být kompilována s vypnutým kontrolováním vstupu/výstupu ({$I-})
pokud se v takto zkompilovaném kódu objeví chyba při vstupu nebo výstupu, všechny následující operace
vstupu a výstupu jsou ignorovány, dokud se nezavolá procedura IOResult
Příklad
var F: file of Byte;
begin
Assign(F, ParamStr(1));
{$I-}
Reset(F);
{$I+}
if IOResult = 0
then
Writeln('Velikost souboru v bajtech: ', FileSize(F))
else
Writeln('Soubor nenalezen');
end.
================================================================================