{ Program si vyzada zadani nazvu dvou souboru, pokud je u kterehokoliv z nich zadan prazdny retezec, skonci. Potom oba soubory otevre, prvni pro cteni, druhy pro zapis, a potom zkopiruje obsah prvniho souboru do druheho. Nakonec vypise hlaseni s informaci, kolik bylo skutecne precteno a jaka je velikost obou souboru. } program kopirovani; uses crt; const MAX = 1000; var f1, f2: file; { netypove soubory, protoze pri kopirovani na typu obsahu nezalezi } s1, s2: string; { retezce pro nazvy souboru } pole: array[1..MAX] of char;{ do tohoto pole budeme nacitat kopirovana data } precteno, zapsano: word; { kolik Bytu bylo skutecne precteno a zapsano } celkem: word; { zde postupne pricitame skutecne prectene Byty } procedure Init; { inicializace programu, vymalujeme par okynek na obrazovku } begin window(1,1,80,3); textbackground(blue); textcolor(yellow); clrscr; writeln; write(' Program pro kopirovani souboru'); window(1,4,80,25); textbackground(black); textcolor(yellow); clrscr; writeln; end; procedure Done; { uklid obrazovky po skonceni prace programu } begin window(1,1,80,25); textbackground(black); textcolor(lightgray); clrscr; end; procedure OtevriSoubory; { procedura nacte nazvy souboru a otevre je, prvni pro cteni, druhy pro zapis } begin write(' Zadejte zdroj (soubor, ze ktereho chcete kopirovat): '); readln(s1); if s1='' then begin Done; write('Program ukoncen. Zadan prazdny retezec.'); readln; halt; end; write(' Zadejte cil (cilovy soubor): '); readln(s2); if s2='' then begin Done; write('Program ukoncen. Zadan prazdny retezec.'); readln; halt; end; assign(f1, s1); assign(f2, s2); {$I-} reset(f1,1); {$I+} if IOResult <> 0 then begin Done; write('Program ukoncen. Zdrojovy soubor '+s1+' se nepodarilo otevrit.'); readln; halt; end; {$I-} rewrite(f2,1); {$I+} if IOResult <> 0 then begin close(f1); Done; write('Program ukoncen. Cilovy soubor '+s2+' se nepodarilo otevrit.'); readln; halt; end; end; begin { hlavni program } Init; OtevriSoubory; celkem := 0; repeat BlockRead (f1, pole, sizeof(pole), precteno); { nacteme blok dat ... } BlockWrite(f2, pole, precteno, zapsano); { ... a zapiseme je do druheho souboru } celkem := celkem + precteno; until (precteno = 0) or (zapsano <> precteno); writeln; writeln('Celkem precteno: ', celkem:5); writeln('Skutecna velikost zdroje:', FileSize(f1):5); writeln('Skutecna velikost cile: ', FileSize(f2):5); close(f1); close(f2); readln; Done; end.