Problem avec DWORD et FILETIME

Résolu
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 26 oct. 2005 à 15:33
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 26 oct. 2005 à 19:14
Bonjour,



Voila j'ai un problème, je voudrai bien sauvegarder dans un fichier la
date d'acces d'un fichier récupéré dans une variable de type
WIN32_FILE_ATTRIBUTES_DATA (structure), hors voila avec les fichier
séquentiel cela ne marche pas (impossible de convertir FILETIME en
const char) et avec les fichier binaire non plus. Voila je me demande
comment faire, si quelqun peut m'aider.



Et si quelqun sait aussi comment rendre lisible a l'écran cette date car a l'affichage j'ai quelque chose du style 4564646646.



Merci d'avance.

18 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 16:24
SYSTEMTIME sttm;
char buf[24];
FileTimeToSystemTime(&TonFtimeIci, &sttm);
GetDateFormat(0, 0, &sttm, "dd/MM/yyyy", buf, 24); // PAR EXEMPLE

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 18:56
WIN32_FIND_DATA wfd;
SYSTEMTIME sttm;
FILETIME ft;
HANDLE hfl;
char buf[20];
hfl = FindFirstFile(szFlName, &wfd);
if(hfl == INVALID_HANDLE_VALUE) return;
FindClose(hfl);
printf("Size Low : %d octets", wfd.nFileSizeLow);
printf("\nSize hight : %d octets", wfd.nFileSizeLow);
FileTimeToLocalFileTime(&wfd.ftLastWriteTime, &ft);
FileTimeToSystemTime(&ft, &sttm);
GetDateFormat(0, 0, &ft, "DD/MM/YY", buf, 20);
Affichage de buf ici.

gaffe que c'est tapé direct ici sans essai alors qlq oubli possible mais le principe y est.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 15:45
fichier binaire ou séquentiel, ces notions n'existent pas sous Windows, c'est seulement si tu te sers de libs d'interprétation. Tout fichier est binaire avec CreateFile, ReadFile, etc...

FileTimeToSystemTime
GetDateFormat

ciao...
BruNews, MVP VC++
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 16:07
lol





maintenant avec FileTimeToSystemTime, cela ne vas pas j'ai "cannot convert FILETIME to const FILETIME for argument 1 is BOOL. :s





Pour mon 1er problème de tantot. ben heu je fait comment pour sauver ma date d'acces fichier alors?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 16:12
sorry j'ai résolu le problème, le prémier argument devait etre passer avec adresse.



Mais maintenant je veu afficher la date, mais cela ne va pas j'ai :



request for memeber wHour in D_stacces wich is a non-class type
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 16:24
J'y suis presque j'ai converti la datesystem avec getdateformat, le
compilo (dev-cpp) a pas mis d'erreur, mais lorsque je veu afficher ma
chaine de caractère devant contenir la date et bien j'ai un bip et j'ai
des caractères aléatoire. Voici le bout de code:



#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <windows.h>



#define WRITE "w"



main(void)

{

WIN32_FILE_ATTRIBUTE_DATA D_fattr;

FILETIME D_ftattr;

FILETIME D2;

LPSYSTEMTIME D_stacces;

FILE *fichier_acces;

char D_intvalacces[11];




GetFileAttributesEx("c:\\CHKMB.TXT",GetFileExInfoStandard,&D_fattr);//On
prend les attributs standart du fichier et on envoi


//les données dans une structure de type :


//WIN32_FILE_ATTRIBUTE_DATA.

//Affichage de la taille en octets du fichier (low bit de poid faible hight poid lourd).

printf("Size Low : %d octets",D_fattr.nFileSizeLow);

printf("\nSize hight : %d octets",D_fattr.nFileSizeLow);



//Récupération de la date de création.

D_ftattr=D_fattr.ftCreationTime; //J'ai envoyé la réponse dans une structure de type FILETIME





FileTimeToSystemTime(&D_fattr.ftLastAccessTime,D_stacces);



GetDateFormat(LOCALE_USER_DEFAULT,DATE_SHORTDATE,D_stacces,"DD/MM/YY",D_intvalacces,11);

printf("\n %s",D_intvalacces);



promis j'arret le multipost maintenant lol
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 16:31
y a pas de '=' à faire sur un FILETIME, c'est un des champs de WIN32_FILE_ATTRIBUTE_DATA.

FileTimeToSystemTime(&D_fattr., &sttm);

gaffe que ton SYSTEMTIME est un pointeur qui me semble pointer NULLE PART.

ciao...
BruNews, MVP VC++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 16:32
OUPS faute de frappe:
FileTimeToSystemTime(&D_fattr.ftLastWriteTime, &sttm);

ciao...
BruNews, MVP VC++
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 16:32
Merci brunews, j'avais mis DD a la place de dd, pfff encore heureu que
j'ai lut la msdn, merci pour ton aide tes un chef, sauf que tu a fait
une erreur, pas de & devant sttm ;)



Merci encore.
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 17:00
Une dernière question BruNews, j'ai fait la mm chose pour l'heure,
GetTimeFormat donc, mais problème il m'affiche l'heure avec 2heures en
moin, pourtant l'heure de la propriété du fichier est exact mais pas
celle qui me donne, pourtant cela devrait etre la mm :s
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 17:20
date ET heure sont en 'system', faut convertir en local.
FileTimeToLocalFileTime

ciao...
BruNews, MVP VC++
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 18:08
heu dezoler encore de te déranger mais, bon ca y est j'ai converti en
LPFILETIME mais je suis revenu à la case départ car maintenant la
fonction gettimeformat , ne fonctionne plus car il faut une structure
de type SYSTEMTIME :s



donc comment LPFILETIME en format time :s
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 18:11
car si je converti ma new structue LPFILETIME en SYSTEMTIME ben
fatalement je retomberai en heure et date system, il n'y a pas une
autre fonction pour avoir les format avec LPFILETIME?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 18:24
mais enfin, tu ne m'as pas l'air en forme aujourd'hui, on va tacher de se réveiller (yeh yeh...).

LPFILETIME est un pointeur sur une struct FILETIME, OK ?
faudrait donc qu'il pointe sur une struct et dans le cas de ton code nenni besoin d'un pointeur. Win donne ce type pour passage d'argument à une fonction mais tant que tu n'en sors pas c'est inutile de déclarer ainsi puisqu'ensuite tu devrais initialiser le pointeur sur adresse d'une struct donc des manips inutiles que dans tous les cas le compilo saquera à la compil.

Donc pour résumer tu déclares FILETIME et non pointeur. Aux APIs tu passes &struct et tout ira bon.

ciao...
BruNews, MVP VC++
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 18:37
hum bon j'ai tacher de faire ce que tu ma dit, mais dezoler pour
GetTimeForm() j'ai quand mm l'erreur "cannot convert FILETIME to const
SYSTEMTIME" lol je suis donc obliger de le convertir si je veu utiliser
la fonction, car c'est le type d'argument qui faut lui fournir :s



je vais prendre une aspirine moi
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 19:08
haaaaaaaaaaaaaaaaaaaaaaaaaaaaa daccorddddddd aparement je comprenait
mal ce que tu disait. Je comprend maintenant le fait d'utiliser
FileTimeToSystemTime na pas d'effet contraire sur la convertion avant
car c'est juste pour le passage des variables, TILT TILT TILT TILT.
Merci beaucoup en tous cas et dezo du dérangement.sympa



du coup je me sent plus malin ptdr.



Bonne soirée BruNews
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 oct. 2005 à 19:11
Rectifs:
printf("\nSize hight : %d octets", wfd.nFileSizeHigh);
et encore
GetDateFormat(0, 0, &sttm, "DD/MM/YY", buf, 20);

espérons que sera tout parce que cette textbox me burne vraiment.

ciao...
BruNews, MVP VC++
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
26 oct. 2005 à 19:14
oui oui ca sera tout , ca fonctionne maintenant. merci encore
0
Rejoignez-nous