我必须制作一个兼容unix的windows delphi例程,它确认文件系统中是否存在文件名,与所需的CaSe完全相同,例如"John.txt",而不是"john.txt".
如果我检查"FileExists('john.txt')"它对于John.txt和JOHN.TXT到期窗口总是如此.
如何创建"FileExistsCaseSensitive(myfile)"函数来确认文件确实是它应该是什么.
DELPHI Sysutils.FileExists使用以下函数来查看文件是否存在,如何将其更改为双重检查文件名是否在文件系统上是小写并且存在:
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;
Lieven Keers.. 7
function FileExistsEx(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 if AnsiSameStr(FindData.cFileName, ExtractFileName(FileName)) then Exit; end; end; Result := -1; end;
汤姆,我也对你的用例很感兴趣.我倾向于同意Motti的观点,认为它会违反直觉,可能会让您的用户感到奇怪.
function FileExistsEx(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 if AnsiSameStr(FindData.cFileName, ExtractFileName(FileName)) then Exit; end; end; Result := -1; end;
汤姆,我也对你的用例很感兴趣.我倾向于同意Motti的观点,认为它会违反直觉,可能会让您的用户感到奇怪.