動作確認
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2018/01/09)
http://qiita.com/7of9/items/2210b09d068fea5c5090
の機能追加版。
日付期間のフィルタを入れたい。
Unit1.cpp
static int __fastcall s_getTotalFileNumbers_dateRange(String targetDir, TDateTime fromDt, TDateTime toDt)
{
if (DirectoryExists(targetDir) == false) {
return 0;
}
String filePattern = L"*.*";
TStringDynArray fileList;
TSearchOption option = TSearchOption::soAllDirectories; // all folders
fileList = TDirectory::GetFiles(targetDir, filePattern, option);
int filecnt = fileList.Length;
TDateTime fildt;
int skipcnt = 0;
for(int idx = 0; idx < filecnt; idx++) {
fildt = TFile::GetLastWriteTime(fileList[idx]);
if (fildt < fromDt || fildt > toDt) {
skipcnt++;
}
}
return (filecnt - skipcnt);
}
日付の名前づけで to / from / tilなどの考慮した記事があり、それに自分もコメントしたのだが、その記事を検索でぱっと見つけられない。
delphiでの実装ではfunction()を使ってフィルタ処理を定義する例がある。ただし、DateStop, DateStartの定義の仕方がしっくりこない。
http://www.experts-exchange.com/questions/25103365/TDirectory-GetFiles-with-DateTime-filter.html