紧急求助 FileExists()函数怎么不起作用?(20分)

  • 主题发起人 主题发起人 ant-z
  • 开始时间 开始时间
A

ant-z

Unregistered / Unconfirmed
GUEST, unregistred user!
假如有一个文件 d:/aaa/bmp/001.bmp

FileExists('d:/aaa//////ico/001.bmp')
结果返回值是 true (无论加多少个/或/)

真是奇怪啊!!!

怎么解决,还有其他查找文件的函数吗???
 
不可能吧

再仔细检查一下程序
 
呵呵:)确实如此,这是这个函数的原代码
function FileAge(const FileName: string): Integer;
var
Handle: THandle;
FindData: TWin32FindData;
LocalFileTime: TFileTime;
begin
Handle := FindFirstFile(PChar(FileName), FindData);
if Handle <> INVALID_HANDLE_VALUE then
begin
Windows.FindClose(Handle);
if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
begin
FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
LongRec(Result).Lo) then Exit;
end;
end;
Result := -1;
end;

他通过调用 FindFirstFile,判断返回值来确定是否有这个文件。
其他的函数我知道是 CreateFile()通过传进去特定的参数,打开存在的文件
通过返回的值来确定是否存在这个文件。
 
if FileExists('d:/aaa/ico/001.bmp') then
......
就可以了,不明白你为什么要加/ or /。
 
原来是FileExists的bug,我改用findfirst好了。
 
后退
顶部