如何拷貝單一的文件(30分求助) (30分)

  • 主题发起人 主题发起人 zhouxwang
  • 开始时间 开始时间
Z

zhouxwang

Unregistered / Unconfirmed
GUEST, unregistred user!
已存在'D:/DataBase/myTable.dbf'<br>我想要把'D:/DataBase/myTable.dbf'拷貝成'D:/BackUp/myTable.dbf'<br>如何實現呢??<br>我在delphi7.0寫了一段代碼,但編譯時總是報錯,請各位大哥幫忙看看.<br>procedure TMain.ToolButton55Click(Sender: TObject);<br>begin<br>&nbsp; if Not DirectoryExists('D:/mylicai/BackUp') then//如果目錄不存在<br>&nbsp; &nbsp; &nbsp;if not ForceDirectories('D:/mylicai/BackUp') then//創建目錄<br>&nbsp; &nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; showmessage('創建D:/mylicai/BackUp失敗,備份不成功!!');<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exit;<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br>&nbsp; if FileExists('D:/DataBase/myTable.dbf') then //檢測文件是否存在<br>&nbsp; &nbsp; &nbsp;if CopyFile(pchar('D:/DataBase/myTable.dbf'),Pchar('D:/BackUp/myTable.dbf'),false)=0 then //copy 文件,不成功返回0<br>&nbsp; &nbsp; &nbsp; &nbsp; showmessage('備份D:/mylicai/DataBase/myTable.dbf失敗,備份不成功!!');<br><br>end;<br>錯誤如下:<br>[warning]unit1.pas(670) Unsafe type'Pchar'<br>也就是 if CopyFile(pchar('D:/DataBase/myTable.dbf'),Pchar('D:/BackUp/myTable.dbf'),false)=0 then<br>這一行
 
myTable.dbf是不是已在用呢<br>用單步跟忠看看﹐錯在哪是一步呢
 
&nbsp; &nbsp;if not CopyFile(pchar('D:/DataBase/myTable.dbf'),Pchar('D:/BackUp/myTable.dbf'),False) then //copy 文件,不成功返回0<br>这句改成上面这样。<br>
 
Sorry,我沒有說明清楚,<br>是編譯時出錯,不是運行時出錯<br>錯誤如下:<br>[warning]unit1.pas(670) Unsafe type'Pchar'<br>也就是 if CopyFile(pchar('D:/DataBase/myTable.dbf'),Pchar<br><br>('D:/BackUp/myTable.dbf'),false)=0 then<br>這一行
 
procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp; if not DirectoryExists('E:/Temp') then<br>&nbsp; &nbsp; if not ForceDirectories('E:/Temp') then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; ShowMessage('Create Dir Error!');<br>&nbsp; &nbsp; &nbsp; Exit;<br>&nbsp; &nbsp; end;<br>&nbsp; if FileExists('C:/Code.mdb') then<br>&nbsp; &nbsp; if CopyFile(PChar('C:/Code.mdb'),PChar('E:/Temp/Code.mdb'),False) = False then<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; ShowMessage('Copy File Error!');<br>&nbsp; &nbsp; end;<br>end;<br>CopyFile这个API的返回值是Boolean,需要写成上边的样子就可以了。
 
这是Delphi中对CopyFile函数的定义:<br>function CopyFile(lpExistingFileName, lpNewFileName: PChar; bFailIfExists: BOOL): BOOL; stdcall;
 
問題已解決,謝謝各位的幫忙,散分::)
 
多人接受答案了。
 
To:Miaofeng<br>如果我想把D:/dataBase整個目錄作備份,<br>或者說要把D:/dataBase目錄下的所有文件作備份.<br>如何處理呢??<br>thanks!
 
有两种方式可以考虑:<br>1、使用function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;和function FindNext(var F: TSearchRec): Integer;以及procedure FindClose(var F: TSearchRec);函数得到某文件夹下的所有文件,然后在循环中分别拷贝到指定的地方;<br>2、使用WINSHELLAPI int WINAPI SHFileOperation( LPSHFILEOPSTRUCT lpFileOp);这个API函数复制整个文件夹。
 
TO:miaofeng<br>關於使用SHFileOperation我一點都不了解,能舉例說明嗎,小弟先謝謝了.
 
后退
顶部