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) dobegin
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 с дискеты на жесткий диск,
просим пользователя вставить другую дискету, пока куски файла не считаются
полностью.
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Разбиение и сборка файла", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!