FindNext - C++ Builder

C++ Builder 參考手冊System::SysutilsFindNext


查找下一個符合條件的文件

頭文件:#include <System.SysUtils.hpp>
命名空間:System::Sysutils
函數原型:

int __fastcall FindNext(TSearchRec &F);

參數:

  • F:函數 FindFirst 返回的 TSearchRec 類型的結構體:

返回值:

  • 0:找到符合條件的文件或文件夾,通過參數 F 返回找到的文件;
  • 不等於 0:沒找到符合條件的文件夾或文件夾
  • 繼續調用 FindNext 可以繼續查找下一個符合條件的文件
  • 查找結束時,必須用函數 FindClose 結束查找,釋放佔用的資源

例子:把 C:\Windows 文件夾裏面的內容顯示在 TStringGrid 裏面

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    StringGrid1->RowCount = 2;
    StringGrid1->Cells[0][0] = L"文件名";
    StringGrid1->Cells[1][0] = L"大小";
    StringGrid1->Cells[2][0] = L"時間";
    StringGrid1->Cells[3][0] = L"屬性";

    int iRowNo = 1;
    TSearchRec sr;
    if(FindFirst(L"C:\\Windows\\*.*", faAnyFile, sr) == 0)
    {
        do{
            UnicodeString sAttr;
            sAttr += sr.Attr & faReadOnly ? L"r" : L"-";
            sAttr += sr.Attr & faArchive  ? L"a" : L"-";
            sAttr += sr.Attr & faHidden   ? L"h" : L"-";
            sAttr += sr.Attr & faSysFile  ? L"s" : L"-";
            StringGrid1->RowCount = iRowNo + 1;
            StringGrid1->FixedRows = 1;
            StringGrid1->Cells[0][iRowNo] = sr.Name;
            StringGrid1->Cells[1][iRowNo] = sr.Attr & faDirectory ? String(L"<文件夾>") : IntToStr(sr.Size);
            StringGrid1->Cells[2][iRowNo] = FormatDateTime(L"yyyy/mm/dd hh:nn:ss.zzz",sr.TimeStamp);
            StringGrid1->Cells[3][iRowNo] = sAttr;
            iRowNo++;
        } while(FindNext(sr) == 0);
        FindClose(sr);
    }
}

運行結果

相關:


C++ Builder 參考手冊System::SysutilsFindNext

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章