FindFirst / FindNext找到找到的错误文件

时间:2016-11-22 16:40:34

标签: c++ c++builder c++builder-6 findfirst

我在Borland C ++ Builder 6中编码。在我的几个应用程序中,我使用以下函数在我们的网络上查找文件:

String sRootDir="N:\\";
String sClmNbr="748000";
TSearchRec fnd1;

if (FindFirst(sRootDir+sClmNbr+"*.PDF",faAnyFile,fnd1)==0)
{
    lbClmCpy->Lines->Add(fnd1.Name);    
    while (FindNext(fnd1)==0)
        {lbClmCpy->Lines->Add(fnd1.Name);}
    FindClose(fnd1);    
}

这是该函数的淡化版本,但您可以看到我想要完成的任务。我尝试使用N:掩码在748000*.*上搜索任何文件。

但是,该函数返回与掩码不匹配的文件。在做了一些挖掘后,我发现它与文件的8.3短名称有关。无论出于何种原因,文件的短名称都是完全错误的。例如,748123_20161110.pdf应该看起来像748123~1.pdf,而不是显示748AE4~1.PDF。我知道一个解决方法(通过检查找到的文件的'Name'值,这将给我全名,然后检查全名)。然而,这很疯狂。

我在这里有几个问题:

  1. 为什么短名称格式不正确?

  2. 有没有办法告诉FindFirst() / FindNext()只搜索长文件名?如果没有,是否有人有可以使用的替代功能?

  3. 有一个DOS命令可以完全禁用短名称。这样做有危险吗?此外,如果我在我们的网络驱动器上禁用此选项,这还够吗?所有的文件操作都是从最终用户的PC上进行的(我是否必须在个人电脑上禁用短名称?

0 个答案:

没有答案