Pascal – Čtení ze souboru


Minule jsem zde přihodil návod jak zapisovat do souboru, tentokrát si nacvičíme jak číst ze souboru. Dnešní příklady budou spíše demonstrativní, opravdový příklad s lepším využitím, si nechám na samostatný článek. Přejdeme tedy k teorii.

Čtení ze souboru už bude o něco těžší, než zápis do něj, ale není to nic, co by jsme nezvládli.

Vše si ukážeme na jednoduchém příkladu a popíšeme si jej..

Takže nejprve si vytvoříme nový program a deklarujeme proměnné.

Deklarujeme si proměnnou soubor s datovým typem text. A proměnnou ctenizesouboru do které se budou zapisovat textové řetězce s datovým typem string.

var soubor: text;
    ctenizesouboru: String;

Tento řádek kódu tedy vložíme nad BEGIN. Teď by jsme měli nějak uživatele informovat a budoucím provedení čtení ze souboru. Program tedy nejprve provede výpis dvou řádků a poté čeká na stisk klávesy, za tím bude následovat postup čtení ze souboru. Vložte si tedy pod BEGIN tento kód:

writeln('Program pro cteni ze souboru');
writeln('Stiskem klavesy provedete cteni ze souboru...');
readln();

Teď nás čeká samostatné čtení ze souboru. Na disku C:\ jsem si vytvořil textový soubor text.txt, který obsahuje následující text:

soubor textu
dalsi radek
treti radek

My tedy musíme nejprve inicializovat textový soubor v programu, v minulém článku o zápisu do souboru, jsme si popisovali funkci assign, která přiřadí proměnné soubor náš textový soubor text.txt. Zadáváme tam celou cestu k textovému dokumentu, zapíšeme to tedy takto:

assign(soubor,'C:\text.txt');

Máme přiřazenou cestu textového dokumentu v proměnné soubor, pokračujeme tedy následující funkcí reset(soubor), která se postará o otevření existujícího souboru pro čtení.  Náš kód tedy aktuálně vypadá zatím takto…

program cteni;

var soubor: text;
    ctenizesouboru: String;

begin
    writeln('Program pro cteni ze souboru');
    writeln('Stiskem klavesy provedete cteni ze souboru...');
    readln();
    assign(soubor,'C:\text.txt');
    reset(soubor);
end.

Otevřeli jsme soubor pro čtení a je na řadě tedy samotné čtení, teď uděláme to, že přečteme první řádek v textovém dokumentu a uložíme jej do proměnné ctenizesouboru. Poté vypíšeme obsah proměnné ctenizesouboru a uzavřeme soubor. Kód, který tedy zapíšeme bude mít tuto podobu:

read(soubor, ctenizesouboru);
write(ctenizesouboru);
close(soubor);

Příkaz read čte ze souboru první řádek, který uloží do proměnné a v následujícím řádku obsah proměnné vypíše. Pak pouze ukončí čtení ze souboru, a jediné co by se ještě mohlo za tímto nacházet, je vyčkání na stisk klávesy. Výsledný kód bude vypadat takto:

program cteni;

var soubor: text;
    ctenizesouboru: String;

begin
    writeln('Program pro cteni ze souboru');
    writeln('Stiskem klavesy provedete cteni ze souboru...');
    readln();
    assign(soubor,'C:\text.txt');
    reset(soubor);
    read(soubor, ctenizesouboru);
    write(ctenizesouboru);
    close(soubor);
    readln();
end.

Pokud by jsme ale chtěli vypsat celý obsah dokumentu, využijeme While cyklu. Přiložím sem kód a popíšu jeho funkci:

program cteni;

var soubor: text;
    ctenizesouboru: String;

begin
    writeln('Program pro cteni ze souboru');
    writeln('Stiskem klavesy provedete cteni ze souboru...');
    readln();
    assign(soubor,'C:\text.txt');
    reset(soubor);
     while not EOF(soubor) do
     begin
        readln(soubor,ctenizesouboru);
        writeln(ctenizesouboru);
     end;
    close(soubor);
    readln();
end.

Tento program má úplně stejnou podobu jako výše uvedený příklad, jen obsahuje navíc While cyklus s funkcí EOF. Funkce EOF je v překladu End of File, čte řádek po řádku dokud nedojede na konec. Takže v našem příkladě máme 3 řádky. Program projede první, zapíše jej do proměnné ctenizesouboru a vypíše jej, poté přejde na druhý řádek, opět vypíše a takto to probíhá dokud nenarazí na konec programu. Tím dochází k úplnému přečtení textového dokumentu, řádek po řádku.

Přikládám zde kompletní přehled funkcí pro práci se soubory v Pascalu:

assign(soubor, název i s cestou) – Přidělení konkrétního souboru na disku proměnné soubor.

rewrite(soubor) - Vytvoření souboru a jeho otevření pro zápis.

reset(soubor) – Otvření existujícího souboru pro čtení

append(soubor) - Otevření text. souboru pro přidávání na jeho konec.

read(soubor, promenna) – Čtení textu ze souboru do proměnné promenna.

write(soubor, promenna) - Zápis textu z proměnné do souboru.

readln(soubor, promenna) – Čtení celého řádku text. souboru do proměnné promenna.

writeln(soubor, promenna) – Zápis řádku z proměnné promenna do text. souboru.

Eof(soubor) – Konec souboru. True versus False.

Eoln(soubor) – Konec řádku textového souboru. True versus False.

Close(soubor) – Zavření souboru.

Příspěvek byl publikován v rubrice Pascal se štítky , , , , , , , . Můžete si uložit jeho odkaz mezi své oblíbené záložky.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>