Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];

Вниз

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

Форум: "WinAPI";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.037 c
1-1128412642
Woolen
2005-10-04 11:57
2005.10.30
TApplicationEvents.OnMessage работает не совсем понятно


14-1128720387
Kerk
2005-10-08 01:26
2005.10.30
Китайский спам


4-1124887364
Tonich
2005-08-24 16:42
2005.10.30
Read/WriteProcessMemory


2-1128408905
Ярослав
2005-10-04 10:55
2005.10.30
Не работает запрос?!!


2-1127735874
Grain
2005-09-26 15:57
2005.10.30
exe-шник виснет





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский