AnsiCompareFileName - C++ Builder

C++ Builder 参考手册 ➙ System::Sysutils ➙ AnsiCompareFileName


比较两个文件名,使用当前的地区和语言,并且根据操作系统文件名是否区分大小写。

头文件:#include
命名空间:System::Sysutils
函数原型:

int __fastcall AnsiCompareFileName(
    const System::UnicodeString S1, 
    const System::UnicodeString S2, 
    bool CheckVolumeCase = false);

int __fastcall AnsiCompareFileName(
    const System::WideChar * S1,
    int Len1,
    const System::WideChar * S2,
    int Len2,
    bool CheckVolumeCase = false);

int __fastcall AnsiCompareFileName(
    const System::UnicodeString S1,
    int Len1,
    const System::UnicodeString S2,
    int Len2,
    bool CheckVolumeCase = false);

参数:

S1: 要比较的文件名字符串1,UnicodeString 类型;
S2: 要比较的文件名字符串2,UnicodeString 类型;
CheckVolumeCase: 是否检查文件系统是否区分大小写;

返回值:

0: S1==S2
>0: S1>S2
<0: S1

  • 比较两个文件名,使用当前的地区和语言;
  • 如果 CheckVolumeCase 为 false,在 Windows 操作系统里面不区分大小写,在 Linux / MAC OS 里面区分大小写;
  • 如果 CheckVolumeCase 为 true,检查 S1 和 S2 所在的文件系统是否区分大小写,如果 S1 和 S2 所在文件系统当中,存在区分大小写的系统,就按照区分大小写比较;
  • 这个函数的参数都是 UnicodeString 类型的了,虽然函数名以 Ansi 开头,参数为 AnsiString 类型的函数都移到 System.AnsiStrings.hpp 这个头文件里面了,参数为 AnsiString 类型的函数都看作过时的函数,不建议使用了。

例子:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int r = Sysutils::AnsiCompareFileName(Edit1->Text, Edit2->Text);
    if(r > 0)
        ShowMessage(Edit1->Text + L" > " + Edit2->Text);
    else if(r < 0)
        ShowMessage(Edit1->Text + L" < " + Edit2->Text);
    else
        ShowMessage(Edit1->Text + L" = " + Edit2->Text);
}

运行结果:

  1. Edit1 输入 d:\abc\ΩΠ\你好ā
    Edit2 输入 D:\ABC\ωπ\你好Ā
    点击按钮 Button1,弹出对话框:d:\abc\ΩΠ\你好ā = D:\ABC\ωπ\你好Ā
    说明在 Windows 操作系统里面文件名不区分大小写,这两个文件名是相同的;
  2. Edit1 输入 d:\abc\def
    Edit2 输入 D:\ABC\defg
    点击按钮 Button1,弹出对话框:d:\abc\def < D:\ABC\defg
  3. Edit1 输入 d:\abc\defh
    Edit2 输入 D:\ABC\defg
    点击按钮 Button1,弹出对话框:d:\abc\defh > D:\ABC\defg
    通过 1., 2. 和 3. 可以看到,大写和小写认为是相同的,字符串长短不同,或者字符不同比较的结果为不同 (大于或小于)。
运行结果
运行结果
运行结果

相关:

  • System::Sysutils::AnsiCompareFileName
  • System::Sysutils::SameFileName
  • System::Sysutils::ExpandFileName
  • System::Sysutils::ExpandFileNameCase
  • System::Sysutils::ExpandUNCFileName
  • System::Sysutils::AnsiCompareStr
  • System::Sysutils::AnsiCompareText
  • System::Sysutils::AnsiStrComp
  • System::Sysutils::AnsiStrIComp
  • System::Sysutils::AnsiStrLComp
  • System::Sysutils::AnsiStrLIComp
  • System::Sysutils::CompareMem
  • System::Sysutils::CompareStr
  • System::Sysutils::CompareText
  • System::Sysutils::StrComp
  • System::Sysutils::StrIComp
  • System::Sysutils::StrLComp
  • System::Sysutils::StrLIComp
  • System::Sysutils::WideCompareStr
  • System::Sysutils::WideCompareText
  • System::Sysutils::GetCurrentDir
  • System::Sysutils::SetCurrentDir
  • System::Sysutils::GetHomePath
  • System::Sysutils::ChangeFileExt
  • System::Sysutils::ChangeFilePath
  • System::Sysutils::ExtractFileDir
  • System::Sysutils::ExtractFileDrive
  • System::Sysutils::ExtractFileExt
  • System::Sysutils::ExtractFileName
  • System::Sysutils::ExtractFilePath
  • System::Sysutils::ExtractRelativePath
  • System::Sysutils::ExtractShortPathName
  • System::Sysutils
  • System::Ioutils::TPath
  • System::Ioutils
  • std::strcmp, std::_strcmp, std::_fstrcmp, std::_tcscmp, std::wcscmp
  • std::strncmp, std::_fstrncmp, std::_tcsncmp, std::_tcsnccmp, std::wcsncmp
  • std::stricmp, std::_stricmp, std::_fstricmp, std::strcmpi, std::_strcmpi, std::_tcsicmp, std::_tcscmpi, std::_wcsicmp, std::wcscmpi, std::_wcscmpi
  • std::strnicmp, std::_strnicmp, std::_fstrnicmp, std::strncmpi, std::_tcsnicmp, std::_tcsncicmp, std::_tcsncmpi, std::_wcsnicmp, std::wcsncmpi, std::_wcsncmpi
  • std::_fullpath, std::_tfullpath, std::_wfullpath
  • std::_makepath, std::_tmakepath, std::_wmakepath
  • std::_splitpath, std::_tsplitpath, std::_wsplitpath

C++ Builder 参考手册 ➙ System::Sysutils ➙ AnsiCompareFileName

你可能感兴趣的:(AnsiCompareFileName - C++ Builder)