Accueil > Forum > > > > Trier des fichiers d'une ListBox par date de modification
Trier des fichiers d'une ListBox par date de modification
vendredi 14 mars 2008 à 15:07:36 |
Trier des fichiers d'une ListBox par date de modification

cartes1
|
bonjour malgré mes recherches sur le forum et sur internet je n'ai pas trouvé le moyen de trier les fichiers d'une ListBox par date de modification en Api Pur (j'utilise C++ Visual Studio6 ). ce code ne m'affiche qu'un seul fichier dans la Listbox et c'est le premier par ordre alphabètique.
Voici mon code: /////////////////////////////////////////////// // Fonction d'extraction de la date et de l'heure de modification /****************************************************************************************************/ char* test(FILETIME Temp) /*****************************************************************************************************/ { char* Chaine=new char; SYSTEMTIME stTemp,stLocal; FileTimeToSystemTime(&Temp,&stTemp); SystemTimeToTzSpecificLocalTime(NULL,&stTemp,&stLocal); wsprintf(Chaine,"%02d/%02d/%d %02d:%02d",stLocal.wDay ,stLocal.wMonth ,stLocal.wYear,stLocal.wHour ,stLocal.wMinute ); return Chaine; } /////////////////////////////////////////////////////////////////////////////////////// ///// Fonction qui Liste les Fichiers "PDF" par Date de Modification ////////////////////////////////////// /****************************************************************************************/ void AfficherListeFichiersParDate (char Dossier[MAX_PATH]) /****************************************************************************************/ { HANDLE hFind; WIN32_FIND_DATA FindData; char* Chaine=NULL;
// Change de dossier SetCurrentDirectory (Dossier);
// Début de la recherche hFind=FindFirstFile ("*.pdf", &FindData); if (hFind!=INVALID_HANDLE_VALUE) { Chaine = test(FindData.ftLastWriteTime); { // Si le fichier trouvé n'est pas un dossier mais bien un fichier, on affiche son nom if (!(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { SendDlgItemMessage(fenetrePrincipale, ID_LISTBOX_PDF, LB_ADDSTRING, 0, (LONG)strcat(Chaine,FindData.cFileName)); } // Fichiers suivants while (FindNextFile (hFind, &FindData)) { Chaine=test(FindData.ftLastWriteTime); //if (!(FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { SendDlgItemMessage(fenetrePrincipale, ID_LISTBOX_PDF, LB_ADDSTRING, 0, (LONG)strcat(Chaine,FindData.cFileName)); } } } // Fin de la recherche } return; } //////////////// Merci d'avance. Cartes1
|
|
vendredi 14 mars 2008 à 16:59:53 |
Re : Trier des fichiers d'une ListBox par date de modification

BruNews
|
DEMO avec simplement une listbox sur une dialog.
#include <windows.h> #include "resource.h"
HWND hlb = 0;
__declspec(naked) DWORD __fastcall bnDatFltFl(LPFILETIME lpft) { __asm { mov edx, [ecx+4] mov eax, [ecx] mov ecx, edx shr eax, 2 shl ecx, 30 shr edx, 2 or eax, ecx push edx push eax fild qword ptr[esp] fstp dword ptr[esp] pop eax pop edx ret 0 } }
void ListeFichiersParDateModif(char *pdir, char *pfltr) { WIN32_FIND_DATA wfd; HANDLE hfl; char *pbuf, *d; DWORD len, data, v; int pos, count; SendMessage(hlb, LB_RESETCONTENT, 0, 0); len = strlen(pdir); if(!len) return; len += strlen(pfltr); pbuf = (char*) HeapAlloc(GetProcessHeap(), 0, len + 2); if(!pbuf) return; d = pbuf; while(*d = *pdir) {pdir++; d++;} if(*(d-1) != '\\') *d++ = '\\'; strcpy(d, pfltr); hfl = FindFirstFile(pbuf, &wfd); HeapFree(GetProcessHeap(), 0, pbuf); if(hfl == INVALID_HANDLE_VALUE) return; count = 0; // NBR ITEMS DANS LISTBOX goFILES: if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) goto nextFL; data = bnDatFltFl(&wfd.ftLastWriteTime); for(pos = 0; pos < count; pos++) { v = SendMessage(hlb, LB_GETITEMDATA, pos, 0); if(data <= v) break; } SendMessage(hlb, LB_INSERTSTRING, pos, (LPARAM) wfd.cFileName); SendMessage(hlb, LB_SETITEMDATA, pos, (LPARAM) data); count++; nextFL: if(FindNextFile(hfl, &wfd)) goto goFILES; filesEND: FindClose(hfl); }
BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam) { switch(mssg) { case WM_INITDIALOG: SetClassLongPtr(hdlg, GCLP_HICON, (long)LoadIcon(0, IDI_APPLICATION)); hlb = GetDlgItem(hdlg, IDLB_FLS); ListeFichiersParDateModif("D:", "*.*"); return 1; case WM_COMMAND: if(wParam == IDCANCEL) EndDialog(hdlg, 0); } return 0; }
ciao... BruNews, MVP VC++
|
|
samedi 15 mars 2008 à 09:08:30 |
Re : Trier des fichiers d'une ListBox par date de modification

cartes1
|
Bonjour BruNews Merci beaucoup, ça marche, mais le seul problème est que je voudrais que le premier fichier de la liste soit le dernier fichier enregistré dans le dossier concerné ou bien si c'est trop compliqué mettre en surbrillance ce fichier : en effet je n'arrive pas à récupérer l'index de ce fichier pour pouvoir l'afficher dans un champ edit. Merci encore Cartes1
|
|
samedi 15 mars 2008 à 09:24:23 |
Re : Trier des fichiers d'une ListBox par date de modification

BruNews
|
void ListeFichiersParDateModif(char *pdir, char *pfltr) { WIN32_FIND_DATA wfd; HANDLE hfl; char *pbuf, *d; DWORD len, data, v; int pos, count; SendMessage(hlb, LB_RESETCONTENT, 0, 0); len = strlen(pdir); if(!len) return; len += strlen(pfltr); pbuf = (char*) HeapAlloc(GetProcessHeap(), 0, len + 2); if(!pbuf) return; d = pbuf; while(*d = *pdir) {pdir++; d++;} if(*(d-1) != '\\') *d++ = '\\'; strcpy(d, pfltr); hfl = FindFirstFile(pbuf, &wfd); HeapFree(GetProcessHeap(), 0, pbuf); if(hfl == INVALID_HANDLE_VALUE) return; count = 0; // NBR ITEMS DANS LISTBOX goFILES: if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) goto nextFL; data = bnDatFltFl(&wfd.ftLastWriteTime); for(pos = 0; pos < count; pos++) { v = SendMessage(hlb, LB_GETITEMDATA, pos, 0); //if(data <= v) break; // CROISSANT SUR DATE if(data >= v) break; // DECROISSANT SUR DATE } SendMessage(hlb, LB_INSERTSTRING, pos, (LPARAM) wfd.cFileName); SendMessage(hlb, LB_SETITEMDATA, pos, (LPARAM) data); count++; nextFL: if(FindNextFile(hfl, &wfd)) goto goFILES; SendMessage(hlb, LB_SETCURSEL, 0, 0); FindClose(hfl); }
ciao... BruNews, MVP VC++
|
|
samedi 15 mars 2008 à 12:19:28 |
Re : Trier des fichiers d'une ListBox par date de modification

cartes1
|
Réponse acceptée !
Rebonjour BruNews C'était pourtant logique mais je n'y avais même pas pensé. Encore un grand Merci pour ton aide sympa et à bientôt.
Cartes1
|
|
Cette discussion est classée dans : listbox, chaine, fichiers, finddata, stlocal
Répondre à ce message
Sujets en rapport avec ce message
selection multiple avec openfilename [ par ebooserge ]
salut a tous, petit souci: j'ai créé une OPENFILENAME dialog qui est censé sélectionner plusieurs fichiers simultanément. pour un fichier c'est assez
Stocker dans un tableau. [ par MorbhAck ]
Bonsoir a tous.J'ai un souci au niveau d'un tableau de chaine de caratère.Je voudrais stocker des chaine de caratcère dans le tableauchar *salut[]={"h
Aide ListBox MFC [ par katson42 ]
Bonjour à tous,je suis en train de réaliser un client FTP, j'ai réussi à afficher les fichiers et dossiers présents dans mon C:/ avec le code suivant
Demande d'aide pour faire une chaine de compilation en C [ par wahidkw1 ]
Bonjour, Je suis en stage et je cherche à faire une chaîne de compilation C pour processeur ARM sur windows.je dois inclure les fichiers déjà codés
[shell]modifier des fichiers [ par hdaly ]
Bonjour, j'aimerai ecrire un script shell qui permet de remplacer une chaine A par une chaine B et ce dans un fichier, qq'un aurait il qqe chose a me
GRrrrr :'( !! chaines et fichiers [ par watch_3754 ]
On se demande pourquoi c'esst la section "Au secours" qui est la plus remplie ^^Voila le probleme, je travaille sur des fichiers qui ne sont pas des t
Problême de listbox à cliquer [ par Gendal67 ]
Bonsoir à tous,Je viens de chercher en vain depuis je ne sais combien de temps...je suis sans solution alors je me tourne vers vous en espérant qu'un
listbox afficher détails fichiers d'un repertoire [ par bougnat83 ]
bonjourVisual C++ 6.0, MFCj'arrive à afficher dans une listbox la liste des fichiers contenu dans un repertoire donné avec :::SendMessage(hListBox, LB
Lister fichiers dans repertoire [ par chikusa ]
Bonjour a tous, Voila mon, problème, j'essaye de lister tous les txt d'un repertoire avec les fonctions FindFirstFile et FindNextFile. Le problème qu
ouverture de fichier compresser .arj [ par vercd7am ]
Bonjour, j'aurais aime savoir comment ouvrir des fichiers compresses en .arj puis enregistrer les fichiers ailleurs. Ouvrir, lire, parcourir un fichi
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|