Transtypage

domsig Messages postés 125 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 11 mai 2010 - 21 févr. 2006 à 14:47
walid2876 Messages postés 49 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 31 août 2008 - 23 févr. 2006 à 01:37
bonjour à tous(toutes !)


il faut que j'écrive un programme d'archivage. Je parcours les dossiers, s'ils sont vides, je les vire (je résume hein). Problème, si ça ne se passe pas bien, la date du dossier change et se met à aujourd'hui. Donc ce que je fais, je récupère avant traitement la date du dossier avec


hf:=CreateFile(PChar(dossier), GENERIC_READ,0,Nil,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0);
GetFileTime(hf,@pf1,@pf2,@pf3);

où hf est un cardinal, pf1 à pf3 des filetime
ensuite je fais mon traitement et je remets la bonne date au dossier avec
hf:=CreateFile(PChar(dossier), GENERIC_WRITE,0,Nil,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,0);
SetFileTime(hf, Nil, Nil, @pf3);
mais la date ne se remet pas bien. Ma question c'est :
comment mettre un messagebox avec la valeur de pf3 ? je sais que c'est un problème de transtypage mais je patauge...
merci d'avance pour votre aide

1 réponse

walid2876 Messages postés 49 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 31 août 2008
23 févr. 2006 à 01:37
utuliser la fonction
FileTimeToSystemTime(
const lpFileTime:FILETIME
lpSystemTime:PSYSTEMTIME
);
Uses ...,...,dateUnils;
Var DateFichier:_SYSTEMTIME;
SetFileTime(hf, Nil, Nil,@pf3);
with DateFichier Do
if FileTimeToSystemTime(pf3,DateFichier) then
showmessage(datetimetostr(encodedatetime(
wYear,wMonth,wDay,wHour,
wMinute,wSecond,wMilliSeconds
)));

la declaration du PSYSTEMTIME dans l'unité windows
PSystemTime = ^TSystemTime;
_SYSTEMTIME = record
wYear: Word;
wMonth: Word;
wDayOfWeek: Word;
wDay: Word;
wHour: Word;
wMinute: Word;
wSecond: Word;
wMilliseconds: Word;
end;
0