Тут потребовалось реализовать копирование файлов с отображением процесса копирования отдельного файла на progressbar`e. Пошукав в закромах родины нашел примерчик
- Код: Выделить всё
function MyCopyFile(FromFile, ToFile: TFileName): Boolean;
var
FromStream, ToStream: TFileStream;
buff : integer;
begin
Result := True;
if not FileExists(FromFile) then begin
Result := False;
Exit;
end;
buf := 64;
FromStream := TFileStream.Create(FromFile, fmRead);
try
ToStream := TFileStream.Create(ToFile, fmCreate);
try
//ProgressBar1.Max := FromStream.Size;
while ToStream.Size < FromStream.Size do begin
ToStream.CopyFrom(FromStream, buff);
//сдесь чё-нить с прогрессом делаем (увеличиваем)
//Application.ProcessMessages;
end;
finally
ToStream.Free;
end;
finally
FromStream.Free;
end;
end;
Данный пример вполне отвечает поставленной задаче. Но вопрос все-таки возник - экспериментально выявлено, что при увеличении значения переменой buff - увеличивается скорость копирования.
Так вот, как узнать максимальный размер буфера, который можно задать?
Целевая платформа - linux, х86