Základy práce se soubory
Spojení souborů
 Tisk

Spojení souborů


Textový soubor se otevře pomocí příkazu append, netextový příkazem reset. U netexto­vého souboru se nastaví ukazatel zpracování na konec souboru příkazem seek (…,filesize). Druhý soubor se otevře příkazem reset. Dále se čte komponenta po komponentě druhého souboru a zapisuje se sekvenčně na konec prvního souboru.

Pro spojení souborů se používají tyto standardní procedury a funkce:


assign, rewrite, ioresult, write/writeln, close


Následující příklad ukazuje spojení dvou souborů na disketě.


program spojsoub;


{$APPTYPE CONSOLE}

// Projekt: PP01 Autor:Kopeček Datum: 14.4.2005

// Funkce: Spojuje dva soubory

uses

SysUtils;


const

    JMENO_SOUB = 'a:vytvor.txt'; // původní soubor na disketě

    KONV_SOUB = 'a:konv.txt';   // konvertovaný soubor na disketě

var

    f,g:text;     // deklarace textového souboru

    s:string;


begin

    assign(f,JMENO_SOUB);     // přiřazení jména souboru a souboru na disku

    assign(g,KONV_SOUB);

{$I-}                         // vypnutí standardního ošetření chyb

    append(f);                  // pokus o otevreni pro rozšíření

    if ioresult <> 0 then begin // soubor neexistuje

        writeln('soubor ',JMENO_SOUB,' neexistuje');


         readln;

         halt;

    end;

    reset(g);               // otevření pro čtení

    if ioresult <> 0 then begin // test zda nedošlo k chybě při otevření

        writeln('chyba pri otevirani souboru',KONV_SOUB);

        readln;               // čekání na operátora

        halt;                 // okamžité ukončení programu

    end;

    while not eof(g) do begin

        readln(g,s);          // čti řádku

                              // ošetření neznámé chyby

        if ioresult <> 0 then begin

           writeln('Neznámá chyba pri cteni z diskety ?');

           readln;

           halt;

        end;


        writeln(f,s);         // zapiš řádku

                              // ošetření chyby - například přeplnění diskety

        if ioresult <> 0 then begin

           writeln('Plna disketa ?');

           readln;

           halt;

        end;


    end;

    close(f);

    if ioresult <> 0 then begin // nepravděpodobná chyba

       writeln('chyba pri zavirani souboru', JMENO_SOUB);

       readln;

       halt;                  // okamžité ukončení programu

    end;

    close(g);

    if ioresult <> 0 then begin // nepravděpodobná chyba

       writeln('chyba pri zavirani souboru',KONV_SOUB);

       readln;

       halt;                  // okamžité ukončení programu

    end;

    writeln('Konec programu');

    readln;

{$I+}                         // zapnutí standardního ošetření chyb

end.