Копирование нетипизированного файла

Задача

Создать копию нетипизированного файла.

Решение

 

var
    f1, f2: file;
    cursor, size, part: longint;
    s: string;
 
begin
    assign (f1, 'c:\_msi.pyd');
    reset (f1, 1);
 
    assign (f2, 'c:\msi2.pyd');
    rewrite (f2, 1);
    cursor := 0;
    part := 256;
    size := filesize (f1);
 
    while not eof (f1) do begin
        blockread (f1, s, part);
        blockwrite (f2, s, part);
        inc (cursor, part);
        if (cursor + part) > size then
            part := size - cursor
    end;
 
    close (f1);
    close (f2);
 
end.

 

Примечания: 

Переменные, связываемые в дальнейшем с нетипизированными файлами, объявляются с помощью слова file.

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

Файл считывается блоками записей. В примере – это 256 блоков за раз. Переменная s хранит произведение размера записи на количество блоков.

При работе с нетипизированными файлами более эффективными являются процедурыblockread и blockwrite по сравнению с read и write.

 

Тема

Файлы

Уровень

Сложные задачи

Добавить комментарий