Textové súbory

Zopakujme si potrebné príkazy
Komponent "memo", čítanie a zápis
Úlohy na riešenie


Zopakujme si potrebné príkazy      Nahor


V jazyku Turbo Pascal sme čítali dáta z textového súboru, uloženom na disku, alebo sme výsledky programu zapísali do súboru. Všetky nasledujúce typy a príkazy už poznáte (s malou zmenou):
    Typy premenných
  • CHAR - znak,
  • STRING - reťazec,
  • TEXTFILE - textový súbor.
    Procedúry a funkcie pre prácu so súbormi
  • ASSIGNFILE(f,'cesta\subor.txt') - premenná f typu textfile bude označovať textový súbor "subor.txt", pričom "cesta" je relatávne, resp. absolútne umiestnenie súboru na disku.
  • EOF(f) - funkcia vracia hodnotu true, ak je koniec súboru f.
  • EOLN(f) - funkcia vracia hodnotu true, ak je koniec riadku v súbore f.
  • RESET(f) - umožní čítať zo súboru, pričom nastaví čítaciu hlavu v súbore f (ak existuje) na začiatok, ak neexistuje, program vyhlási chybu.
  • REWRITE(f) - umožní zapisovať do súboru f a nastaví zapisovaciu hlavu v súbore f na začiatok. V prípade existujúceho súboru súbor prepíše - zmaže sa jeho obsah.
  • READ(f,x) - prečíta zo súboru f do premennej x a čítaciu hlavu posunie za posledný znak, ktorý prečíta.
  • READLN(f,x) - prečíta zo súboru f do premennej x a čítaciu hlavu posunie na začiatok ďalšieho riadku v súbore f.
  • READLN(f) - posunie čítaciu hlavu na začiatok ďalšieho riadku v súbore f, ale nič neprečíta
  • WRITE(f,x) - zapíše do súboru f hodnotu premennej x a zapisovaciu hlavu posunie za posledný znak, ktorý zapíše
  • WRITELN(f,x) - zapíše do súboru f hodnotu premennej x a zapisovaciu hlavu posunie na začiatok ďalšieho riadku v súbore f
  • WRITE(f) - = zapíše do súboru f prázdny riadok a zapisovaciu hlavu posunie na začiatok ďalšieho riadku v súbore f
  • CLOSEFILE - uzatvorenie textového súboru f


Komponent "memo", čítanie a zápis      Nahor

Pre výpis výsledkov programu sme doteraz využívali komponent "label", ale vhodný je aj komponent Memo z palety Standard. Do okna komponentu môžeme zapisovať pomocou vlastnosti Lines, napr.:
Memo1.Lines.Text:='Ahoj!';
Do okna môžeme vypisovať len reťazce znakov, pre premenné iného typu musíme použiť konverzné funkcie (IntToStr, FloatToStr,...). Vymazanie obsahu memo okienka umožní príkaz Clear:
Memo1.Clear;
Do okna komponentu Memo môžeme načítať text z textového súboru príkazom:
Memo1.Lines.LoadFromFile('{adresa textového súboru}');
Pre uloženie textu do textového súboru z komponentu Memo zadáme príkaz:
Memo1.Lines.SaveToFile('{adresa textového súboru}');
Komponent MEMO

Príklad 1 - Memo a dátum

Vytvorte projekt, ktorý do memo okna po stlačení tlačidla vypíše aktuálny dátum a čas, po istom čase sa obsah okna zmaže. Nájdite význam funkcií v Delphi "helpe" - Now, Date, DateTimeToStr, DateToStr, Time, TimeToStr, FormatDateTime, použite niektoré z nich v úlohe. Pri mazaní obsahu okna Memo použite Timer a jeho vlastnosť Enabled.

Príklad 2 - Čítanie zo súboru

Vytvoríme projekt na spájanie bodov podľa predlohy, aký poznáte z detkých časopisov Skopírujte si textový súbor kresli.txt na svoj disk. Súbor obsahuje riadky s troma číslami - poradové číslo, x-ová a y-ová súradnica bodu na grafickej ploche. Vytvorte projekt s veľkou grafickou plochou (pozri max. x a max.y v súbore), vložte tlačidlo, ktorým súbor otvoríte a na miestach so súradnicami z textového súboru vykrelite malý krúžok a vypíšte poradové číslo bodu. Do projektu doplňte udalosť OnMouseMove pre voľné kreslenie myšou do grafickej plochy.

Príklad 3 - Štatistika súboru

a) Vytvorte projekt, ktorý otvorí ľubovoľný textový súbor a zistí v ňom počet medzier, ten vypíše v memo okne.
b) Projekt doplňte tak, aby ste urobili úplnú znakovú štatistiku súboru - zistite počty jednotlivých znakov v súbore. Využite ASCII kódy znakov, nastavte vlastnosť ScrollBars v Memo okne.

Príklad 4 - Zápis do súboru

Urobte program, ktorý vám umožní na stlačenie tlačidla zapisovať do zvoleného textového súboru text, ktorý sa nachádza v komponente Edit.



Úlohy na riešenie      Nahor

1. Vytvorte svoj vlastný textový súbor s obrázkom, pozmeňte kód príkladu 2 a presvedčte sa o jeho správnom tvare. Projekt doplňte o farebné vykresľovanie myšou. Upravte program tak, aby stačilo klikať len na vrcholy bodov a nebolo treba čiary kresliť myšou (vznikne obrázok tvorený úsečkami).


2. Vytvorte projekt, ktorý otvorí zdrojový kód programu v Pascale a otestujte jeho správne "ozátvorkovanie" t.j. - či počet ľavých zátvoriek je rovnaký ako počet pravých.

3. Vytvorte projekt, ktorý otvorí zdrojový kód programu v Pascale a vykoná štatistiku vybraných príkazov - kľúčových slov (begin, end, if, then, else, while, do, repeat, until).

4. Vytvorte projekt, ktorý prostredníctvom editovacích okien umožní vkladať údaje o žiakoch (meno, priezvisko, vek, výšku), údaje zapíše do súboru (využite typ record). Potom nastaví čítaciu hlavu na začiatok súboru a zistí počet žiakov, priemerný vek a výšku žiakov, nájde meno žiaka s maximálnou a minimálnou výškou. Výsledky programu sa zapíšu do memo okna.


Efekty s obrázkami Obsah Vlastné menu