Вниз
Скачать: CL | DM;

процент копирования файла   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
8-1085863005
Dankin
2004-05-30 00:36
2004.08.15
Как скопировать какуюто часть изображения


14-1091104964
СатирЪ
2004-07-29 16:42
2004.08.15
Сохранение формы в run-time


14-1090962696
Piter
2004-07-28 01:11
2004.08.15
Новая для меня уязвимость


14-1091078630
Ega23
2004-07-29 09:23
2004.08.15
Class Designer


3-1090408271
Иванов Сергей
2004-07-21 15:11
2004.08.15
Выборка из большой базы




   Наверх