Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

CopyFileEx   Найти похожие ветки 

 
LiqS   (2005-08-28 19:49) [0]

Можете написать пример использования функции CopyFileEx ?
Как на сколько процентов скопирован файл?


 
Anatoly Podgoretsky ©   (2005-08-28 20:09) [1]

Можем


 
Турист   (2005-08-28 20:09) [2]

>LiqS   (28.08.05 19:49)  
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=2133


 
Джо ©   (2005-08-28 21:17) [3]

Когда-то уже сюда постил.

unit Unit2;

interface
uses Windows, SysUtils, Classes, ComCtrls;

type
 IFileCopier = interface
   ["{9ACEC816-5A3F-4BA4-95A2-B3C8CE08B82D}"]
   procedure Copy;
   procedure SetProgressBar (const AProgressBar: TProgressBar);
   property ProgressBar: TProgressBar write SetProgressBar;
 end;

 TFileCopier = class (TInterfacedObject, IFileCopier)
 private
   FSource,
   FDest: string;
   FProgressBar: TProgressBar;
   procedure SetPosition (APos: Int64);
 public
   constructor Create (const ASource, ADest: string);
   procedure Copy;
   procedure SetProgressBar (const AProgressBar: TProgressBar);
 end;

implementation

function CopyCallBack (
 TotalFileSize,
 TotalBytesTransferred,
 StreamSize,
 StreamBytesTransferred: Int64;
 StreamNumber,
 CallBackReasom: DWORD;
 SrcFile,
 DestFile: THandle;
 FileCopier: TFileCopier): DWORD; stdcall;
begin
 FileCopier.SetPosition(TotalBytesTransferred);
end;

{ TFileCopier }

procedure TFileCopier.Copy;
 function FileSize (const AFileName: string): Int64;
 var
   FS: TFileStream;
 begin
   FS := TFileStream.Create(AFileName,fmOpenRead);
   try
     Result := FS.Size
   finally
     FS.Free;
   end;
 end;
begin
 if Assigned(FProgressBar) then
 begin
   FProgressBar.Position := 0;
   FProgressBar.Min := 0;
   FProgressBar.Max := FileSize (FSource)
 end;
 if not CopyFileEx(PChar(FSource),PChar(FDest),@CopyCallback,Self,PBOOL(False),0) then
   RaiseLastOSError;
end;

constructor TFileCopier.Create(const ASource, ADest: string);
begin
 FSource := ASource;
 FDest := ADest;
end;

procedure TFileCopier.SetPosition(APos: Int64);
begin
 if Assigned (FProgressBar) then
   FProgressBar.Position := APos
end;

procedure TFileCopier.SetProgressBar(const AProgressBar: TProgressBar);
begin
 FProgressBar := AProgressBar;
 if Assigned (FProgressBar) then
   FProgressBar.Position := 0;
end;

end.

Использование:


procedure TForm1.Button1Click(Sender: TObject);
var
 FileCopier: IFileCopier;
begin
 FileCopier := TFileCopier.Create("I:\pub\video\movies\First_films.avi","e:\temp\film.avi");
 FileCopier.ProgressBar := ProgressBar1;
 FileCopier.Copy;
end;


 
LiqS   (2005-08-28 23:07) [4]

спасибо


 
Lamer@fools.ua ©   (2005-08-29 08:42) [5]

>if not CopyFileEx(PChar(FSource),PChar(FDest),@CopyCallback,Self,PBOOL(False),0) then
  RaiseLastOSError;


Апшибочка. Тогда уж сразу nil написать. Либо передавать, всё-таки, указатель на переменную типа BOOL.



Страницы: 1 вся ветка

Текущий архив: 2005.10.30;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.037 c
6-1120982160
Jetus
2005-07-10 11:56
2005.10.30
Как организовать Proxy-сервер?


2-1128958528
Bobby Digital
2005-10-10 19:35
2005.10.30
функция Random


11-1109976286
Watcher
2005-03-05 01:44
2005.10.30
Обрамление KOL формы.


1-1128415708
JohnKorsh
2005-10-04 12:48
2005.10.30
Вопрос по package.


14-1128618000
LordOfRock
2005-10-06 21:00
2005.10.30
Заработок в интернете.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский