【发布时间】:2012-08-09 19:12:51
【问题描述】:
您好,我在 Delphi 5 中使用CopyFile 函数。但是文件没有被复制到目标。我也看不到错误。了解CopyFile 为何失败的最佳方法是什么?
if CopyFile(source, dest, false) then
ShowMessage('Success')
else
ShowMessage('Error');
我总是收到显示错误。 :(
【问题讨论】:
-
您应该使用 pchar (CopyFile(pchar(sourcefile), pchar(destfile), false)。要检查文件是否副本,请使用 FileExists(destfile)。您可以尝试将 CopyFile 包装起来/except 并响应异常...
-
@JohnEasley 没错,但无助于识别错误代码。
-
主要故障模式:1. 源不存在 2. 目标路径不存在 3. 目标文件只读 4. 权限错误。
-
例如,试图替换当前打开的文件(因此被锁定)
-
@JohnEasley:这个问题是关于D5/7(pre-Unicode)的,其中参数为
PChar(与PAnsiChar相同),而CopyFile实际上是CopyFileA下的兜帽。不过没关系 - 在 D2010 中,string是 Unicode,如果没有类型转换,Delphi 仍然会自动转换,同上;在 D2010 中,CopyFile实际上是宽字符串版本的CopyFileW。 Delphi 所做的自动转换类似于它允许您在访问类实例(它们是指针)或像TPoint这样的记录时删除^运算符的方式,因此您可以使用Form1.而不是Form1^.