gpt4 book ai didi

delphi - 在DeleteFile()之前是否必须检查FileExists()?

转载 作者:行者123 更新时间:2023-12-03 15:39:08 25 4
gpt4 key购买 nike

前段时间,我不记得在哪里,我读到过有关delphi最佳实践的文章。

而不是这个:

if FileExists(MyFile) then begin
if not DeleteFile(MyFile) then
ShowMessage('Unable to delete file');
end;

写下:

if not DeleteFile(MyFile) then
ShowMessage('Unable to delete file');

第二个的优点和缺点是什么?

最佳答案

为了清楚起见,我将您问题中的代码读为希望删除文件,并且仅当文件存在且无法删除时才报告错误。

<小时/>

在尝试删除文件之前检查文件是否存在并不是最佳做法。事实上,这样做是一种经典的反模式。

正确的模式是尝试直接删除文件。如果失败则检查失败原因。这将告诉您该文件是否存在,或者删除是否因其他原因失败。在 Windows 上,这意味着使用名为 DeleteFile 的 Win32 API 函数并检查其返回值是否成功。如果失败,调用GetLastError获取失败原因。

以跨平台方式执行此操作并非完全微不足道,而且我不认为 RTL 提供此类功能。

<小时/>

还值得指出的是,您的两个代码块不可互换。他们有不同的行为。第一个 block 将文件不存在视为成功。第二个将其视为错误。如果您希望仅使用单个函数调用来重现第一个行为,那么您需要根据错误代码进行区分,如上所述。

关于delphi - 在DeleteFile()之前是否必须检查FileExists()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com