似乎在我的代码中的某个地方,我正在使用的文件以某种方式保留它,因为我似乎无法删除它。我的CopyFile例程似乎工作,但在我完成复制后,我似乎无法删除它。
FSize:= GetFileSizeExt(InPath + InFileName);
if FSize <= 0 then
begin
//archive file
if AfterAction = 'MOVE' then
begin
tmpExt:= ExtractFileExt(InFileName);
if CopyFile(PChar(InPath + InFileName), PChar(MovePath + '\' + ChangeFileExt(InFileName,'') + '_' + FormatDateTime('mmddyyyy-hhmmss', Now) + tmpExt), True) then
begin
if not DeleteFile(pchar(InPath + InFileName)) then
begin
ExitCode:= 8;
raise ECustomException.Create('Invalid After Action. Error Deleting File!');
end;
end //if CopyFile
else //if not DeleteFile
begin
ExitCode:= 16;
raise ECustomException.Create('File Copy Error!');
end; //else
end; //if AfterAction = 'MOVE' then
ExitCode:= 17;
raise ECustomException.Create('Error Getting file size OR file size less than or equal to zero!');
end; //if filesize =0
当我在线上设置断点时
如果不是DeleteFile
它总是最终提高异常。 InPath&amp; InFileName匹配中使用的
CopyFile例程
无论如何,我总是得到错误尝试删除文件。这与文件大小有关吗?我只复制和删除文件大小&lt; = 0
答案 0 :(得分:11)
如果您不知道删除文件失败的原因,为什么不让操作系统告诉您?替换此代码:
raise ECustomException.Create('Invalid After Action. Error Deleting File!');
带
我不认为问题与您展示的代码有关,所以这里有一个要检查的事项列表:
我要做的另一件事:当引发关于无法删除文件的异常时,在我在IDE中运行RUN之前,我将转到Windows资源管理器并尝试自己删除该文件。
答案 1 :(得分:0)
为什么不使用MoveFile()或MoveFileEx()函数而不是复制然后删除? 它执行相同的工作,但Windows API MoveFile()函数无法跨驱动器重命名/移动文件。