Základy práce se soubory
Soubory v Pascalu
Soubory v Pascalu
Soubory v Pascalu
Soubor je datová struktura, kterou tvoří lineární, homogenní, dynamická sekvence komponent/řádek/bloků.
V Pascalu se rozeznávají 3 druhy souborů:
- textové soubory: textové soubory se skládají z řádek textu oddělených znaky CR a LF, řádky jsou různě dlouhé (i prázdné) a skládají se ze znaků malé a velké anglické abecedy, číslic, speciálních znaků a znaků národních abeced
- soubory s udaným typem komponenty: typ komponenty nemůže být soubor, nejčastějším typem je typ záznam (např. materiál, zaměstnanec)
- soubory bez udaného typu: pracují s fyzickými bloky, užívají se zejména pro spolupráci s datovými soubory vytvořenými v jiných systémech než Pascal
Definice typu soubor:
type soubor1 = text; {textový soubor}
type soubor2 = file of typ; {soubor s udaným typem komponenty (komponenta typu typ)}
type soubor2 = file; {netypový soubor}
Procedury a funkce pro práci se soubory v abecedním pořadí (parametry nejsou uvedeny, lze je nalézt v nápovědě Pascalu/Delphi):
- append - otevření textového souboru pro přidávání dalšího textu nakonec souboru
- assign - přiřazení souborové proměnné souboru na disku
- blockread - blokové čtení souboru
- blockwrite - blokový zápis do souboru
- close - uzavření souboru
- eof - test konce souboru
- eoln - test konce řádky
- erase - odstranění souboru
- filepos - zjištění aktuální komponenty
- filesize - zjištění velikosti souboru
- flush - vyprázdnění souborových bufferů
- ioresult - zjištění výsledku I/O operace
- read - čtení ze souboru
- readln - čtení ze souboru s vynecháním zbylých znaků do konce řádky
- rename - přejmenování souboru
- reset - otevření existujícího textového souboru jen pro čtení, ostatních typů souborů pro čtení i zápis
- rewrite - otevření nového souboru, textového jen pro zápis, ostatních typů pro čtení i zápis
- settextbuf -nastavení bufferu
- seak - nastavení aktuální komponenty
- seakeoln - nalezení nové řádky
- seakeof - nalezení konce souboru
- truncate - oříznutí konce souboru
- write - zápis do souboru
- writeln - zápis do textového souboru s odřádkováním
Textové soubory lze zpracovávat jen sekvenčně:
Otevření pomocí reset umožní číst postupně jednotlivé znaky, jejich skupiny a řádky od začátku do konce bez možnosti se vracet.
Otevření pomocí rewrite ruší event. již existující soubor tohoto jména, potom umožňuje zapisovat jednotlivé znaky, jejich skupiny a řádky.
Otevření pomocí append umožňuje zapisovat jednotlivé znaky, jejich skupiny a řádky na konec existujícího souboru.
Soubory s udaným typem a bez typu lze zpracovávat sekvenčně i přímým přístupem. V případě otevření s přímým přístupem lze nastavit aktuální pozici na libovolnou komponentu resp. blok a potom libovolně zapisovat i číst jednu nebo více po sobě následujících komponent resp. bloků. Otevření reset a rewrite se v tomto případě liší jen tím, že reset otevírá již existující soubor a rewrite nový soubor s eventuálním smazáním souboru téhož jména.
Soubory je třeba po skončení práce s nimi zavírat. To má dva hlavní důvody:
- zavřením se uvolňují dočasně použité prostředky (paměť v systémových tabulkách, vyrovnávací paměť - buffery)
- vyprazdňují se vyrovnávací buffery, je jistota, že výstupní operace jsou dokončeny