1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
| void CScrutePDFsDlg::OnBnClickedButton1()
{
std::list < std::string > :: const_iterator itRepertoires;
std::multimap < std::string , _SProduitFile > mapFiles;
m_ctlListPDFs.ResetContent();
m_ctlSeq.DeleteAllItems();
for ( itRepertoires = listRepertoires.begin() ; itRepertoires != listRepertoires.end() ; ++itRepertoires )
{
std::string strPointEntree = *itRepertoires;
std::string strRecherche = strPointEntree + _T("\\*.PDF");
HANDLE hFindPDFs;
WIN32_FIND_DATA fileFindData;
hFindPDFs = FindFirstFile(strRecherche.c_str(), &fileFindData);
if ( hFindPDFs != INVALID_HANDLE_VALUE )
{
do
{
// On recherche les fichiers uniquement
if ( (fileFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0 )
{
std::string strPathComplet = strPointEntree + _T("\\") + fileFindData.cFileName;
std::string strProduit = std::string(fileFindData.cFileName);
strProduit.erase(strProduit.begin() + 2, strProduit.end());
_SProduitFile fichier;
fichier.m_strFileName = strPathComplet.c_str();
fichier.m_fileTime = fileFindData.ftLastWriteTime;
mapFiles.insert(std::multimap<std::string, _SProduitFile>::value_type(strProduit, fichier));
}
}
while(FindNextFile(hFindPDFs, &fileFindData));
FindClose(hFindPDFs);
}
}
_SProduitFile plusVieux;
std::string strProduitCourant = _T("");
int nCountPrd = 0;
m_vstamps.clear ();
std::multimap<std::string, _SProduitFile>::const_iterator itFiles;
for ( itFiles = mapFiles.begin() ; itFiles != mapFiles.end() ; ++itFiles )
{
std::string strProduit = itFiles->first;
_SProduitFile fileData = itFiles->second;
if ( strProduitCourant != _T("") )
{
if ( strProduitCourant != strProduit )
{
m_ctlListPDFs.AddString(_T("---------------------------------------------------------------------------------------"));
SYSTEMTIME localTime;
GetLocalFileTime(&localTime, &plusVieux.m_fileTime);
CString strFormatHeure;
strFormatHeure.Format(_T("Fichier le plus vieux pour les %s, date du %02d-%02d-%04d à %02d:%02d:%02d et s'appelle %s"),
strProduitCourant.c_str(),
localTime.wDay, localTime.wMonth, localTime.wYear, localTime.wHour, localTime.wMinute, localTime.wSecond,
plusVieux.m_strFileName.c_str());
m_ctlListPDFs.AddString(strFormatHeure);
int nItem = m_ctlSeq.GetItemCount();
m_ctlSeq.InsertItem (nItem, strProduitCourant.c_str());
strFormatHeure.Format(_T("%d"), nCountPrd);
m_ctlSeq.SetItem (nItem, LIST_COL_NOMBRE, LVIF_TEXT, strFormatHeure, 0, 0, 0, 0);
strFormatHeure.Format(_T("%02d-%02d-%04d à %02d:%02d:%02d"),
localTime.wDay, localTime.wMonth, localTime.wYear, localTime.wHour, localTime.wMinute, localTime.wSecond);
m_ctlSeq.SetItem (nItem, LIST_COL_DATE_HEURE, LVIF_TEXT, strFormatHeure, 0, 0, 0, 0);
m_vstamps.push_back (plusVieux.m_fileTime);
m_ctlSeq.SetItemData (nItem, (DWORD_PTR) &m_vstamps[m_vstamps.size () - 1]);
strProduitCourant = strProduit;
plusVieux.m_strFileName = _T("");
nCountPrd = 0;
}
}
else
{
nCountPrd = 0;
strProduitCourant = strProduit;
plusVieux.m_strFileName = _T("");
}
if ( plusVieux.m_strFileName == _T("") )
{
plusVieux.m_strFileName = fileData.m_strFileName;
memcpy(&plusVieux.m_fileTime, &fileData.m_fileTime, sizeof(FILETIME));
}
else
{
if ( CompareFileTime(&fileData.m_fileTime, &plusVieux.m_fileTime) == -1 )
{
plusVieux.m_strFileName = fileData.m_strFileName;
memcpy(&plusVieux.m_fileTime, &fileData.m_fileTime, sizeof(FILETIME));
}
}
SYSTEMTIME fichierLocalTime;
GetLocalFileTime(&fichierLocalTime, &fileData.m_fileTime);
CString strFormat;
strFormat.Format(_T("Produit %s, fichier %s, date %02d-%02d-%04d à %02d:%02d:%02d"),
strProduit.c_str(),
fileData.m_strFileName.c_str(),
fichierLocalTime.wDay, fichierLocalTime.wMonth, fichierLocalTime.wYear, fichierLocalTime.wHour, fichierLocalTime.wMinute, fichierLocalTime.wSecond);
m_ctlListPDFs.AddString(strFormat);
nCountPrd++;
}
m_ctlListPDFs.AddString(_T("---------------------------------------------------------------------------------------"));
CString strFormat;
SYSTEMTIME localTime;
GetLocalFileTime(&localTime, &plusVieux.m_fileTime);
strFormat.Format(_T("Fichier le plus vieux pour les %s, date du %02d-%02d-%04d à %02d:%02d:%02d et s'appelle %s"),
strProduitCourant.c_str(),
localTime.wDay, localTime.wMonth, localTime.wYear, localTime.wHour, localTime.wMinute, localTime.wSecond,
plusVieux.m_strFileName.c_str());
m_ctlListPDFs.AddString(strFormat);
int nItem = m_ctlSeq.GetItemCount();
m_ctlSeq.InsertItem (nItem, strProduitCourant.c_str());
strFormat.Format(_T("%d"), nCountPrd);
m_ctlSeq.SetItem (nItem, LIST_COL_NOMBRE, LVIF_TEXT, strFormat, 0, 0, 0, 0);
strFormat.Format(_T("%02d-%02d-%04d à %02d:%02d:%02d"),
localTime.wDay, localTime.wMonth, localTime.wYear, localTime.wHour, localTime.wMinute, localTime.wSecond);
m_ctlSeq.SetItem (nItem, LIST_COL_DATE_HEURE, LVIF_TEXT, strFormat, 0, 0, 0, 0);
m_vstamps.push_back (plusVieux.m_fileTime);
m_ctlSeq.SetItemData (nItem, (DWORD_PTR) &m_vstamps[m_vstamps.size () - 1]);
m_ctlSeq.SortItems(MyCompareProc, (LPARAM) 0);
} |
Partager