Стандартные процедуры и функции для нетипизированных файлов. Программа для копирования нетипизированных файлов

Страницы работы

Содержание работы

ЛАБОРАТОРНАЯ РАБОТА №6

Тема: Стандартные процедуры и функции для нетипизированных файлов.

Цель работы: Освоить специфику метода копирования нетипизированного файла.

Постановка задачи: Написать программу для копирования нетипизированных файлов.

Псевдокод программы:

program lab_6;

const {Описание констант}

recsize = 512; {длина блока}

var

filein, fileout: file;     {файлы}

buf: pointer;              {буфер}

pathin, pathout: string;   {пути файлов}

n,size,q: integer;         {вспомогательные переменные}

begin

{Запрос путей исходного и копируемого файлов}

{Инициализация файловых переменных}

{Открытие исходного файла с длиной блока 1 байт, для уточнения размера}

size:=filesize(filein);

{Определение количества считываний по 512 байт, и остатка файла}

q:=size div recsize;

n:=size mod recsize;

{Открытие файлов с длиной блока 512 байт}

{Выделение памяти буферу, копирование основной части файла, чистка памяти}

getmem(buf,q*recsize);

blockread(filein, buf^, q);

blockwrite(fileout, buf^, q);

freemem(buf);

{Открытие файлов с длиной блока 1 байт, для копирования остатка}

{Позиционирование на остаток файла}

seek(filein,q*recsize);

seek(fileout,q*recsize);

{Выделение памяти, копирование остатка, чистка памяти}

getmem(buf,n);

blockread(filein, buf^, n);

blockwrite(fileout, buf^, n);

freemem(buf);

end.

Контрольный пример:

Введём в программу путь до исходного файла, который необходимо скопировать. Далее введём новый путь, по которому нужно сохранить копию файла. По завершении работы копия файла будет находиться по указанному пути.

Результат работы программы:

Рисунок 1 – Результат работы программы

Текст программы:

program lab_6;

const

recsize = 512;

var

filein, fileout: file;

buf: pointer;

pathin, pathout: string;

n,size,q: integer;

begin

write('Vvedite put ishodnogo faila: ');

readln(pathin);

write('vvedite put kopii faila: ');

readln(pathout);

assign(filein, pathin);

assign(fileout, pathout);

reset(filein, 1);

size:=filesize(filein);

q:=size div recsize;

n:=size mod recsize;

close(filein);

reset(filein, recsize);

rewrite(fileout, recsize);

getmem(buf,q*recsize);

blockread(filein, buf^, q);

blockwrite(fileout, buf^, q);

freemem(buf);

close(fileout);

close(filein);

reset(filein, 1);

reset(fileout, 1);

seek(filein,q*recsize);

seek(fileout,q*recsize);

getmem(buf,n);

blockread(filein, buf^, n);

blockwrite(fileout, buf^, n);

freemem(buf);

end.

Похожие материалы

Информация о работе