Всем доброго!
Известна утилита dd, которая пишет устройство в файл и обратно.
Возможно ли сделать то же средствами Паскаля?
Модератор: Модераторы
program as_dd;
uses
SysUtils;
const
FiName = '/dev/sda';
FoName = 'test.bin';
function DD_Work(FiName, FoName: String; BlockSize, Count: LongInt): LongInt;
var
Fi: File;
Fo: File;
Bf: array of Byte;
Sz, Wr, Cn, i: LongInt;
begin
SetLength(Bf, BlockSize);
AssignFile(Fi, FiName);
AssignFile(Fo, FoName);
Reset(Fi, 1);
Rewrite(Fo, 1);
Cn := 0; Sz := 0; Wr := 0;
for i := 1 to Count do begin
BlockRead (Fi, Bf[0], BlockSize, Sz);
if Sz = 0 then break;
BlockWrite(Fo, Bf[0], Sz, Wr);
if Sz <> Wr then break;
inc(Cn, Wr);
end;
CloseFile(Fo);
CloseFile(Fi);
Result := Cn;
end;
begin
DD_Work(FiName, FoName, 512 * 1024, 20);
end.
Владимир писал(а):Еще вопрос: как определить и показать пользователю, что запись на флешку завершена? По факту запись на флешку 1 Гб длится около 4 мин (работает кэш), тогда как цикл записи на экране якобы завершен за несколько секунд.
// Добавьте в цикл
Flush(Fo);
xchgeaxeax писал(а):Flush(Fo);
Владимир писал(а):xchgeaxeax писал(а):Flush(Fo);
останавливается на 4,2 Гб с сообщением Disc full.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17