Разбиение и сборка файла

Советы » Файлы » Разбиение и сборка файла

Не так сложно, вот как это может выглядеть:

var

inf: file

; outf: file

; size: longint; outsize: longint; amt: word; amtRead: word; begin

assignfile(inf, 'входной файл'); reset(inf, 1); size := fileSize(inf); repeat

showMessage('Вставьте дискету в дисковод "A"') { или "B", а лучше позвольте их определять } assignFile(outf, 'A: выходной файл'); rewrite(outf, 1); outsize := diskFree(1); { или 2, если это дисковод "B" } while

(outsize > 0) and

(size > 0) do

begin

amt := sizeof(buf); if

amt > outsize then

amt := outsize; blockRead(inf, buf, amt, amtRead); blockWrite(outf, buf, amtRead); dec(outSize, amtRead); dec(size, amtRead); end

; closeFile(outf); until

size <= 0; closeFile(inf); end

;

Писалось все "от руки", поэтому синтаксис может быть с ошибками. Правильным было бы добавление кода, который позволит пользователю определить используемый дисковод ("A" или "B"), задание именной схемы для восстановления информации, если один из дисков испортится и пр.

Сборка происходит аналогично: открываем на диске выходной файл, просим пользователя вставить дискетту, blockRead/blockWrite с дискеты на жесткий диск, просим пользователя вставить другую дискету, пока куски файла не считаются полностью.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com