Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > TFileStream


Автор: Monty 6.4.2003, 22:57
Цитата
var
 FromF, ToF: file;
 NumRead, NumWritten: Integer;
 Buf: array[1..2048] of Char;
begin
 if OpenDialog1.Execute then                               { Display Open dialog box }
 begin
   AssignFile(FromF, OpenDialog1.FileName);
   Reset(FromF, 1); { Record size = 1 }
   if SaveDialog1.Execute then                              { Display Save dialog box}
   begin
     AssignFile(ToF, SaveDialog1.FileName); { Open output file }
     Rewrite(ToF, 1); { Record size = 1 }
     Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FileSize(FromF))
       + ' bytes...');
     repeat
       BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
       BlockWrite(ToF, Buf, NumRead, NumWritten);
     until (NumRead = 0) or (NumWritten <> NumRead);
       CloseFile(FromF);
       CloseFile(ToF);
   end;
 end;
end;


а как мне сделать тоже самое но только с TFileStream confused.gif мне нужно что бы копировалось блоками

Автор: SmaLL 7.4.2003, 09:03
Адаптированный вариант:
Код
var
FromF, ToF: TFileStream;
NumRead, NumWritten: Integer;
Buf: array[1..2048] of Char;
begin
if OpenDialog1.Execute then  { Display Open dialog box }
begin
  FromF:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
  try
    if SaveDialog1.Execute then  { Display Save dialog box}
    begin
      ToF:= TFileStream.Create(SaveDialog1.FileName, fmCreate);
      Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FromF.Size) + ' bytes...');
      try
        repeat
          NumRead:= FromF.Read(Buf, SizeOf(Buf));
          NumWritten:= ToF.Write(Buf, NumRead);
        until (NumRead = 0) or (NumWritten <> NumRead);
      finally
        ToF.Free;
      end;
    end;
  finally
    FromF.Free;
  end;
end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)