Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Внизпроцент копирования файла Найти похожие ветки
← →
vajo (2004-07-02 19:01) [0]Я копирую файлы таким образом:
function WindowsCopyFile(FromFile, ToDir: string) : boolean;
var S,T : TFileStream;
ss:string;
Siz:Int64;
begin
FormInstall.lb_FileCopy.Caption:=FromFile;
Application.ProcessMessages;
DeleteAllAttr(FromFile);
ss := Copy(FromFile,length(FromFile),1);
If ss = "\" then
begin
MkDir(FormInstall.ed_Path.Text + Copy(FromFile,3,Length(FromFile)-1));
Sleep(1000);
Exit;
end;
S := TFileStream.Create(FromFile, fmOpenRead );
try
T := TFileStream.Create(ToDir, fmOpenWrite or fmCreate);
try
T.CopyFrom(S, S.Size ) ;
Siz := S.Size;
Application.ProcessMessages;
FileSetDate(T.Handle, FileGetDate(S.Handle));
finally
T.Free;
end;
finally
S.Free;
end;
FormInstall.pb.Progress := FormInstall.pb.Progress + Siz;
end;
Можно ли в этом коде дописать чтобы показывать на сколько процентов скопировался файл?
← →
Dimaxx (2004-07-02 21:22) [1]Запросто! Сложи размеры всех файлов вместе и засунь их в Progess.MaxValue. Далее прибавляй размер скопированного блока файла к прогрессу и вперед!
← →
vajo (2004-07-04 19:57) [2]>Dimaxx
У меня так и идет
FormInstall.pb.Progress := FormInstall.pb.Progress + Siz;
добавляется размер скопированного файла.
А хочется, чтобы параллельно показывался процесс копирования самого файла, а то при копировании файла 200М может сложится впечатление, что программа повисла.
← →
Anatoly Podgoretsky © (2004-07-04 20:17) [3]Тогда копируй его кусками
← →
GuAV © (2004-07-04 20:35) [4]А не прощели воспользоватся готовым SHFileOperation?
← →
Dimaxx (2004-07-04 22:02) [5]2 GuAV: Чел хочет ручками - он не ищет легких решений.
2 vajo: Поставь второй прогрессбар и в maxvalue засовывай длину текущего файла. Далее копируешь кусок его и прибавляешь к position длину куска и так до конца.
← →
GuAV © (2004-07-05 00:04) [6]
> Чел хочет ручками - он не ищет легких решений.
Respect :-)
> 2 vajo: Поставь второй прогрессбар и в maxvalue засовывай
> длину текущего файла. Далее копируешь кусок его и прибавляешь
> к position длину куска и так до конца.
А если не получается, - декапилируй тотал командер и посмотри как сделано :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c