Liste, tri sur date (et non texte de la date)

Signaler
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
-
themaste
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
-
Bonjour à tous!
Voila, mon problème est que j'ai une liste d'éléments, dont une colonne est remplie par une date.
Mon souci, c'est que lorsque je clique sur le nom de la colonne, la liste est trier selon la date, mais sur un format texte, et non date.
Par exemple, j'ai
24/11/04
25/11/04
26/11/04
26/12/04 <- Lui, il ne devrait pas être là!
27/11/04

Comment puis-je faire pour avoir un tri avec un comportement de date?

Merci à vous tous!

7 réponses

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
1
Utilise strncmp :

char date[] = "26/11/04";
char baddate[] = "26/12/04";

//si tu veux comparer le jour
if (!strncmp(date, baddate, 2)) ...etc
//si tu veux comparer le mois
if (!strncmp(date + 3, baddate + 3, 2)) ..etc
//et enfin l'année
if (!strncmp(date + 6, baddate + 6, 2)) ...etc

Tu pourrais faire ca avec des pointeur aussi, mais c bocou plus simple comme ca.

++

+2(p - n)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
exemple de tri de listview (je suppose que c'est ça) ic:
http://www.cppfrance.com/code.aspx?id=11151

au lieu de trier sur le texte, faut inserer l'quivalent de la date sur un 32 bits dans le lParam de l'item de la listview et trier sur cela.
Packer une date est hyper simple: 0xYYYYMMDD

ciao...
BruNews, MVP VC++
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
1
merci brunews!
Cependant je t'avoue, je n'ai pas trop compris l'histoire du lparam
Pourrais tu me montrer un exemple?
Merci....
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
La struct LVITEM a un membre lParam, insere une valeur dedans et ainsi te servira pour le tri en la relisant.

ciao...
BruNews, MVP VC++
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
1
il faut dans le lparam qu' jinsere la valeur 0xYYYYMMDD comme tu as dit?
Puisque j'ai un format du style "31/12/04 17:55:12", il faudrait que je mette un format pour ca ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
Dans l'exemple mis en haut, il n'y avait pas d'heures minutes secondes, va falloir trouver un autre moyen.

ciao...
BruNews, MVP VC++
Messages postés
130
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
8 juillet 2008
1
A la rigueur, si le tri n'est fait que sur la date (sans l'heure), cela ne me derangerais pas. Que faut-il que je mette du coup?
item.lparam = ?;
En fait, je n'arrive pas a comprendre comment fonctionne le lparam, son utilisé précise, les possibilités de valeurs...L'aide msdn n'estpas vraiment helpfull!