Transtypage

Signaler
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010
-
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008
-
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

Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008

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;