【问题标题】:System.SysUtils.FileExists doesn't work in network folderSystem.SysUtils.FileExists 在网络文件夹中不起作用
【发布时间】:2026-02-05 13:25:01
【问题描述】:

下面的函数很简单,只要文件存在与否就返回。

function TWStartConfig._FileExists(sFileDir: string): Boolean;
begin
  Result := System.SysUtils.FileExists(sFileDir);
end;

sFileDir := 'd:\test.txt' 时,它可以工作。

sFileDir := '\\10.0.0.71\public\test.txt' 时不起作用。我可以通过 Windows 资源管理器访问。

我试过System.IOUtils.TFile.Exists(),但我得到了同样的回报。

【问题讨论】:

标签: delphi


【解决方案1】:

我使用 System.SysUtils.FindFirstFile insted of System.SysUtils.FileExists 更改了我的函数。 重要的是要考虑该程序在 Windows 上运行。

function TWStartConfig._FileExists(sFileDir: string): Boolean;
    var
        wfd: WIN32_FIND_DATA;
        handle: THandle;
    begin
        handle := FindFirstFile(PChar(sFileDir), wfd);
        Result := handle <> INVALID_HANDLE_VALUE;
    end;

【讨论】:

  • 如果它解决了您的问题,这无处可答。它还将为文件夹返回TRUE(与其名称相反)。
  • 而且你需要在拿到手柄时关闭手柄。