![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
процент копирования файла [D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
vajo © (2004-07-02 19:01:00)Я копирую файлы таким образом:
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;
Можно ли в этом коде дописать чтобы показывать на сколько процентов скопировался файл?
GuAV (2004-07-05 00:04:00) [1]
> Чел хочет ручками - он не ищет легких решений.
Respect :-)
> 2 vajo: Поставь второй прогрессбар и в maxvalue засовывай
> длину текущего файла. Далее копируешь кусок его и прибавляешь
> к position длину куска и так до конца.
А если не получается, - декапилируй тотал командер и посмотри как сделано :)
Dimaxx (2004-07-04 22:02:00) [2]2 GuAV: Чел хочет ручками - он не ищет легких решений.
2 vajo: Поставь второй прогрессбар и в maxvalue засовывай длину текущего файла. Далее копируешь кусок его и прибавляешь к position длину куска и так до конца.
GuAV (2004-07-04 20:35:00) [3]А не прощели воспользоватся готовым SHFileOperation?
Anatoly Podgoretsky (2004-07-04 20:17:00) [4]Тогда копируй его кусками
vajo (2004-07-04 19:57:00) [5]>Dimaxx
У меня так и идет
FormInstall.pb.Progress := FormInstall.pb.Progress + Siz;
добавляется размер скопированного файла.
А хочется, чтобы параллельно показывался процесс копирования самого файла, а то при копировании файла 200М может сложится впечатление, что программа повисла.
Dimaxx (2004-07-02 21:22:00) [6]Запросто! Сложи размеры всех файлов вместе и засунь их в Progess.MaxValue. Далее прибавляй размер скопированного блока файла к прогрессу и вперед!