|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2009 Messages : 55 ![]() |
Bonjour,
Je souhaite créer un petit programme me permettant de choisir un répertoire dont il faut lister le contenu (noms des fichiers dans un premier temps). Grâce à la FAQ, je me suis débrouillé et, en changeant un peu le code, j'y suis arrivé. Le programme me permet de spécifier le dossier à utiliser et me liste son contenu dans un fichier qu'il crée. Le soucis est que j'aimerais que cette liste soit ordonnée sur la date de création des fichiers, c'est-à-dire que le premier écrit dans le fichier devra être le fichier le plus vieux, et ainsi de suite jusqu'au plus récemment créé. Je n'ai pas trouvé comment faire, j'espère que vous pourrez me filer un coup de main. Voici mon code : Code :
|
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 172 ![]() |
Utilise TSearchRec.Time, la fonction FileDateToDateTime va te le convertir au besoin, ajoute cette valeur via AddObject au lieu de Add
Puis appel CustomSort avec une procédure utilisant Object comme critère de comparaison, la fonction CompareDateTime devrait aider à créer ta TStringListSortCompare Voir aussi FindData pour Windows, plus précis avec ftCreationTime, ftLastAccessTime et ftLastWriteTime
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2009 Messages : 55 ![]() |
Merci pour tes indications, elles me sont utiles bien que je n'arrive toujours pas à mes fins.
Je n'arrive pas à ajouter un TDateTime via la fonction AddObject de ma TStringList. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : avril 2005 Messages : 1 612 ![]() |
Il suffit de caster ton TDateTime en (TObject*), non?
__________________
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() ![]() Inscription : avril 2005 Messages : 1 612 ![]() |
Salut, j'ai fait un petit demo avec deux TDateTimePicker, le temps dans le premier est mis dans le deuxième en passant par un TStringList:
Code :
__________________
|
||
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2009 Messages : 55 ![]() |
Ok pour le cast, merci.
Cependant, j'ai omis de préciser que je travaillais avec C++ Builder 5 et il semble que je n'ai pas accès à la fonction CompareDateTime. En gros, mes objets sont présents dans la liste, il ne me reste plus qu'à trouver un moyen de les trier sur la date. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Inscription : avril 2005 Messages : 1 612 ![]() |
Salut, est-ce que tu as essayer d'inclure DateUtils.hpp pour utiliser CompareDateTime?
__________________
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : septembre 2009 Messages : 55 ![]() |
Oui mais le problème vient justement du fait que le fichier n'est pas présent dans la version 5 de C++ Builder.
|
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() ![]() Inscription : avril 2005 Messages : 1 612 ![]() |
Salut, Indy possède aussi une fonction CompareDateTime, il suffit d'inclure IdGlobalProtocols.hpp:
Prototype: Code :
extern PACKAGE int __fastcall CompareDateTime(const System::TDateTime ADateTime1, const System::TDateTime ADateTime2); Citation:
__________________
|
|
|
00
|
|
|
#10 |
|
Membre confirmé
![]() Inscription : janvier 2003 Messages : 273 ![]() |
Si ça n'existe pas dans CB5 -ce dont je doute car CB5 a un jeu de fonctions très riche, la fonction a peut être un nom différent.
Perso, j'utilise les fonctions de l'API Windows pour ça: http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx Certes pas avec un TDateTime (avec la structure FILETIME). Ce n'est pas aussi facile que d'appeler CompareDateTime, il faut appeler plusieurs fonctions. De mémoire (je n'ai pas le projet sous les yeux): FileTimeToSystemeTime, puis SystemTimeTo?, et enfin CompareFileTime. Donc fait une recherche sur : - conversion TDateTime vers FILETIME - TDateTime CompareFileTime Et tu devrais trouver une solution qui fonctionne avec CB5. |
|
00
|
Copyright © 2000-2013 - www.developpez.com