Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



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

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


 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 с дискеты на жесткий диск, просим пользователя вставить другую дискету, пока куски файла не считаются полностью.




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS