Всем доброго!
Известна утилита 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.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1