LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
13 août 2007 à 10:46
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
14 août 2007 à 14:49
Salut,
Voila mon probleme je recupere la date de cration d'un fichier via FindFirstFile(dir,&IpFindFileData);
FILETIME tim = IpFindFileData.ftCreationTime;
et j'aimerais faire une comparaison avec le temps courant et si le fichier est plus vieux d'un mois je l'efface...
habituellement j'utilise pour ce genre de chose la fonction difftime
mais elel prend un argument 2 time_t
alors voila je cherche a convertir le filetime en time_t afin de pouvoir faire la soustraction entre les deux temps ....
ps : je ne suis aps contre d'autres idées si il y en a ...
Merci
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 13 août 2007 à 17:42
Bon excuse moi d'insister mais t'es sûr que le fichier est vieux d'un mois? parce que si on convertit en SYSTEMTIME il dit qu'il date du 1er aout a peu pres.
//On va lister tout les programmes et repertoires du disque C:\
//Pour lister juste les .txt par exemple mettre: c:\\*.txt
//Ou sinon tout les fichier qui ont comme nom file c:\\file.*
LPCTSTR dir = "C:\\RTOP\\INSTAL\\trace com\\*.txt";
//structure nécéssaire pour FindFirstFile() et FindNextFile()
WIN32_FIND_DATA IpFindFileData;
//la on initialise la variable hdlfff a la fonction FindFirstFile
hdlfff = FindFirstFile(dir,&IpFindFileData);
//premier fichier qu'il faut afficher avant la fonction FindNextFile qui ne
//comprend pas le 1er fichier
FILETIME ftLimitTime;
GetSystemTimeAsFileTime(&ftLimitTime);
ftLimitTime.dwHighDateTime=ftLimitTime.dwHighDateTime-6018; // précis à une minute a peu près pour 30 jours/mois
if(CompareFileTime(&IpFindFileData.ftCreationTime,&ftLimitTime)<0)
{
char dir_file[100] = "C:\\RTOP\\CORUS RAIL\\INSTAL\\trace com\";
strcat(dir_file,IpFindFileData.cFileName);
if( DeleteFile( dir_file ) != 0 )
erase =true;
}
//Tant que le prochain fichier n'est pas égale a 0
while (FindNextFile(hdlfff,&IpFindFileData))
{
FILETIME ftLimitTime;
GetSystemTimeAsFileTime(&ftLimitTime);
ftLimitTime.dwHighDateTime=ftLimitTime.dwHighDateTime-6018; // précis à une minute a peu près j'ai compté 30 jours/mois
if(CompareFileTime(&IpFindFileData.ftCreationTime,&ftLimitTime)<0)
{
char dir_file[100] = "C:\\RTOP\\CORUS RAIL\\INSTAL\\trace com\";
strcat(dir_file,IpFindFileData.cFileName);
if( DeleteFile( dir_file ) != 0 )
erase =true;
}
}
//A la fin du programme fermeture le HANDLE
FindClose(hdlfff);
}
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 14 août 2007 à 09:58
Bon a priori j'avais raison en faisant un copier coller de mes vieux fichiers ca devait changer la date de création et du coup forcément pour lui ca faisait moins d'un mois , a priori ca marche avec le code de SAkingdom
pour en etre sur j'ai juste changer le dir vers un repertoire ancien et c'est bon
PS: 30jours 2592000 30*24*3600
merci a tous pour cette prise de tete collective ;-)