Главная страница
    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.045 c
1-1128767887
Antonn
2005-10-08 14:38
2005.10.30
Ширина выводимого текста на Canvas е


3-1127092937
DrAndrey
2005-09-19 05:22
2005.10.30
Перехват ошибки в хранимой процедуре при добавлении строки


14-1128519629
oldman
2005-10-05 17:40
2005.10.30
Иногда бывает так, как не бывает...


1-1128684587
XfroSt
2005-10-07 15:29
2005.10.30
Плоский TDateTimePicker


14-1129048573
Santyago
2005-10-11 20:36
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский