Zde je příklad na otevření souboru a zápis do jiného souboru. Jedná se o naprostou jednoduchou kopii obsahu souboru.
Čtení ze souboru a zápis do souboru
Program předpokládá existenci souboru vstup.txt
v adresáři C:\Users\Jitka\Desktop\pascal\
. Pokud by soubor neexistoval, program je ukončen běhovou chybou.
Čtení a zápis probíhá po znacích
program ZapisDoSouboru; uses crt; var tVstup,tVystup: text; znak: char; begin clrScr; assign(tVstup, 'C:\Users\Jitka\Desktop\pascal\vstup.txt'); reset(tVstup); assign(tVystup, 'C:\Users\Jitka\Desktop\pascal\vystup.txt'); rewrite(tVystup); while not eof(tVstup) do begin read(tVstup, znak); // write(znak); // kontrolni vypis znaku na obrazovku write(tVystup, znak); end; close(tVstup); close(tVystup); repeat until keyPressed; end.
Čtení a zápis probíhá po řádkách
program ZapisDoSouboru; uses crt; var tVstup,tVystup: text; radka: string; begin clrScr; assign(tVstup, 'C:\Users\Jitka\Desktop\pascal\vstup.txt'); reset(tVstup); assign(tVystup, 'C:\Users\Jitka\Desktop\pascal\vystup.txt'); rewrite(tVystup); while not eof(tVstup) do begin readln(tVstup, radka); // writeln(radka); // kontrolni vypis radky na obrazovku writeln(tVystup, radka); end; close(tVstup); close(tVystup); repeat until keyPressed; end.
Ošetření existence vstupního souboru
Program nepředpokládá existenci souboru vstup.txt
v adresáři C:\Users\Jitka\Desktop\pascal\
. Pokud zdrojový soubor nenajde, vypíše chybovou hlášku. Kontrola probíhá ošetřením chyb pomocí výsledku ioResult
a nastavením direktiv překladače.
Čtení a zápis probíhá po znacích
program ZapisDoSouboru; uses crt; var tVstup,tVystup: text; znak: char; begin clrScr; assign(tVstup, 'C:\Users\Jitka\Desktop\pascal\vstup.txt'); {$I-} reset(tVstup); {$I+} if ioResult <> 0 then writeln('Vstupni soubor se nepodarilo otevrit.') else begin assign(tVystup, 'C:\Users\Jitka\Desktop\pascal\vystup.txt'); rewrite(tVystup); while not eof(tVstup) do begin read(tVstup, znak); // write(znak); // kontrolni vypis znaku na obrazovku write(tVystup, znak); end; close(tVstup); close(tVystup); end; repeat until keyPressed; end.
Čtení a zápis probíhá po řádkách
program ZapisDoSouboru; uses crt; var tVstup,tVystup: text; radka: string; begin clrScr; assign(tVstup, 'C:\Users\Jitka\Desktop\pascal\vstup.txt'); {$I-} reset(tVstup); {$I+} if ioResult <> 0 then writeln('Vstupni soubor se nepodarilo otevrit.') else begin assign(tVystup, 'C:\Users\Jitka\Desktop\pascal\vystup.txt'); rewrite(tVystup); while not eof(tVstup) do begin readln(tVstup, radka); // writeln(radka); // kontrolni vypis znaku na obrazovku writeln(tVystup, radka); end; close(tVstup); close(tVystup); end; repeat until keyPressed; end.
Soubor z aktuálního adresáře
V předchozích příkladech byla použita konkrétní cesta k souboru. Uživatel může mít cestu k souboru ve svém počítači jinou. Jedna z možností je vyzvat uživatele k zadání cesty k souboru, nebo cestu požadovat jako parametr při spuštění exe souboru. Další možnost je, že program bude hledat soubor v aktuálním adresáři, ze kterého je exe soubor pouštěn. Aktuální adresář lze zjistit pomocí procedury getDir
.
Čtení a zápis probíhá po znacích
program ZapisDoSouboru; uses crt; var tVstup,tVystup: text; znak: char; adresar: string; const vstup = 'vstup.txt'; vystup = 'vystup.txt'; begin clrScr; getDir (0, adresar); assign(tVstup, adresar + '\' + vstup); {$I-} reset(tVstup); {$I+} if ioResult <> 0 then writeln('Vstupni soubor se nepodarilo otevrit.') else begin assign(tVystup, adresar + '\' + vystup); rewrite(tVystup); while not eof(tVstup) do begin read(tVstup, znak); // write(znak); // kontrolni vypis znaku na obrazovku write(tVystup, znak); end; close(tVstup); close(tVystup); end; repeat until keyPressed; end.
Více informací
- Run-Time Library: System – freepascal.org
- File handling functionsFile handling functions
- Eof – zde se soubor čte z parametrů programu zadaných při spuštění
- IOResult
- getdir
- Pascal pro začátečníky 9 - Práce se soubory – soom.cz
- Řešené úlohy z Turbo Pascalu – Eduard Polách
- Programování I: – MFF UK Pavel Töpfer