美文网首页
AnsiCompareFileName - C++ Builde

AnsiCompareFileName - C++ Builde

作者: 玄坴 | 来源:发表于2020-07-02 12:36 被阅读0次

    C++ Builder 参考手册System::SysutilsAnsiCompareFileName


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

    头文件:#include <System.SysUtils.hpp>
    命名空间:System::Sysutils
    函数原型:

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

    参数:

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

    返回值:

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

    • 比较两个文件名,使用当前的地区和语言;
    • 如果 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::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
    • strcmp, _strcmp, _fstrcmp, _tcscmp, wcscmp
    • strncmp, _fstrncmp, _tcsncmp, _tcsnccmp, wcsncmp
    • stricmp, _stricmp, _fstricmp, strcmpi, _strcmpi, _tcsicmp, _tcscmpi, _wcsicmp, wcscmpi, _wcscmpi
    • strnicmp, _strnicmp, _fstrnicmp, strncmpi, _tcsnicmp, _tcsncicmp, _tcsncmpi, _wcsnicmp, wcsncmpi, _wcsncmpi
    • <cstring>

    C++ Builder 参考手册System::SysutilsAnsiCompareFileName

    相关文章

      网友评论

          本文标题:AnsiCompareFileName - C++ Builde

          本文链接:https://www.haomeiwen.com/subject/gepdahtx.html