[似乎在我的代码中的某个地方,我正在使用的文件以某种方式搁置了它,因为我似乎无法删除它。我的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和InFileName匹配CopyFile例程
无论如何,我总是遇到错误,尝试删除该文件。这与文件大小有关吗?我仅在文件大小<= 0
时复制和删除如果您不知道为什么删除文件失败,为什么不让操作系统告诉您?替换此代码:
raise ECustomException.Create('Invalid After Action. Error Deleting File!');
与
我认为问题与您所显示的代码无关,所以这里列出了要检查的事项:
我要做的另一件事:当出现关于无法删除文件的异常时,在IDE中点击RUN之前,我先进入Windows资源管理器并尝试自己删除文件。
为什么不使用MoveFile()或MoveFileEx()函数而不是复制然后删除?它执行相同的工作,但是Windows API MoveFile()函数无法在驱动器之间重命名/移动文件。
[20年4月3日星期五9:51。我将确认在一些我不打算调查的随机条件下,Delphi7不会删除零长度文件。在我的程序中,它可以删除'em的one,但不能删除2nd,但是我确信您的随机里程会有所不同。我在各种情况下都将它们用作标志,所以现在我只是“回显愚蠢的消息> stupid〜file”,因此它是not空。
[10:29 am。天哪,我忘了德菲精英们的好心! ...无论如何,我出色的解决方案没有用。似乎DeleteFile,Windows和Delphi无法可靠地在Windows 10中删除此处的文件,即使它不是空的也是如此。如果我能解决的话,我将以欣喜的心情返回,假设巨魔不会烧毁大地并永远禁止我....