【发布时间】:2015-10-28 07:29:04
【问题描述】:
我有一个带有按钮的 delphi 表单。单击此按钮,用户可以浏览文件并将文件复制到目录中。
我的函数代码是这样的:
function TdmData.CopyAFile(Const Sourcefile, DestFile: string): boolean;
var Src, Dest : PChar;
begin
Src := StrAlloc(Length(SourceFile)+1);
Dest := StrAlloc(Length(DestFile)+1);
try
StrPCopy(Src,SourceFile);
StrPCopy(Dest,DestFile);
result := (CopyFile(Src,Dest,FALSE));
finally
StrDispose(Src);
StrDispose(Dest);
end;
end;
按钮的点击事件:
CopyAFile(fn, Path +'\'+ ExtractFileName(fn));
当我在 Win XP 机器上运行此表单并按下按钮时,我无法理解,它工作正常,如果我浏览到它被复制到的目录,我可以在其中看到文件。
但是在更高版本的操作系统(例如 Win 8.1)上运行此表单时,它不会复制文件,再次检查目录我看不到文件。
我没有收到任何错误,我已经逐步完成了正常运行的代码。
有没有人遇到过这种情况或知道原因可能是什么?如果是这样,任何帮助都会很棒。
【问题讨论】:
-
你有写入目标目录的权限吗?
-
您是复制到程序文件目录还是任何其他系统目录?也许您的文件被复制到虚拟商店。
-
我已经检查了权限,在那里看不到任何问题。我已经尝试了多个目录,但仍然没有运气
-
@Dag 你使用
WinAPI.Windows.CopyFileir 是你的CopyFile方法自定义吗? -
CopyFile在所有版本的 Windows 上都能正常工作。您的问题是您没有目标目录的写权限。因为UAC。这是10年前推出的。 “我没有收到任何错误”。你没有检查错误,所以你怎么知道没有错误。请阅读CopyFile的文档。它将失败并且GetLastError将返回ERROR_ACCESS_DENIED。或者您的应用程序已虚拟化,CopyFile成功但写入虚拟商店。
标签: file delphi operating-system delphi-xe2