利用DLL在程序中实现文件拷贝 王寅龙 1999年 第26期 13版   在所开发的应用软件中,有时我们对某些文件进行拷贝(如对数据库进行备份、制作安装程序等),但是常用的一些语言却没有提供可直接进行文件拷贝的过程或函数。为此,我曾利用Delphi编制了可提供文件拷贝过程的动态连接库Copf.dll,其输出过程为CopyFile。由于DLL具有简化编程、运行速度快等诸多优点,且不受编程语言的限制,用Delphi编 写的Copf.dll同样可被VB、VC等面向对象语言进行静态或动态调用,从而方便地在程序中实现文件拷贝。   附源程序如下:   library copf;   uses   SysUntils,   Classes;   Procedure copyfile(Sfname.Dfname:string):far;export;//带路径的文件名;   Var   Sourcef,Destinef:file;   NumRead,NumWritten: Integer;   Buf: array[1..4096] of Char;//定义缓冲区;   Begin   AssignFile(Sourcef,Dfname);   Reset(Sourcef,1);   AssignFile(Destinef,Dfname);   Rewrite(Destinef,1);   Repeat   BlockRead(Sourcef,Buf,Size Of(Buf),NumRead);//读源文件;   BlockWrite(Destinef,Buf,NumRead,NumWritten);//写目标文件;   Until (NumRead = 0) or (NumWritten<>NumRead);   CloseFile(Soucef);   CloseFile(Destinef);   End;   Exports   Copyfile;//输出过程;   End;   以上源程序编译后便生成Copf.dll。   现就静态调用举例:   unit Name;   interface   uses   Windows…;   Type   Tzcform=class(Tform)   …   end;   var   Form1: Tform1;   Implementation   Procedure copyfile(Sfname,Dfname:string);far;external ′c:\copf′;//DDL路径名;   {$R *.DFM}   Procedure Tform1.CopyButtonClick(Sender: Tobject);   Begin   …   if fileexist(Sfname)//如果源文件;   then copyfile(Sfname,Dfname);   …   end;