Bonjour à tous
La lecture de la date d'un fichier me fait afficher l'heure avec une heure de retard.
Appel de la fonction GetFileTimes et affichage de tout cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Var // Globales Creation : TDateTime; Der_Acces : TDateTime; Der_MOdif : TDateTime;
Fonction appelée (je crois me souvenir qu'elle vient des FAQ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure TForm1.Btn_1Click(Sender: TObject); Var Nom_F : string; begin Nom_F := 'DELPHI.ICO'; Form1.Lab_Nom_F.Caption := Nom_F; GetFileTimes(Nom_F, Creation, Der_Acces, Der_MOdif); Form1.Lab_Date_DerAcces.Caption := FormatDateTime('dd/mm/yyyy hh:nn', Der_Modif); end;
Le prog m'affiche 19/09/2015 07:00 . C'est faux : c'est 8 H 00 et non 7. Je dois sans doute reconfigurer des paramètres de dates avec une API ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 Function GetFileTimes(const FileName: string; var Created: TDateTime; var Accessed: TDateTime; var Modified: TDateTime): Boolean; var Handle_F: THandle; Info1, Info2, Info3: TFileTime; SysTimeStruct: SYSTEMTIME; TimeZoneInfo: TTimeZoneInformation; Bias: Double; begin Result := False; Bias := 0; Handle_F := FileOpen(FileName, fmOpenRead or fmShareDenyNone); if Handle_F > 0 then begin try if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then Bias := TimeZoneInfo.Bias / 1440; // 60x24 GetFileTime(Handle_F, @Info1, @Info2, @Info3); if FileTimeToSystemTime(Info1, SysTimeStruct) then Created := SystemTimeToDateTime(SysTimeStruct) - Bias; if FileTimeToSystemTime(Info2, SysTimeStruct) then Accessed := SystemTimeToDateTime(SysTimeStruct) - Bias; if FileTimeToSystemTime(Info3, SysTimeStruct) then Modified := SystemTimeToDateTime(SysTimeStruct) - Bias; Result := True; finally FileClose(Handle_F); end; end; end;
Merci
P.S.: Là, on est ds un brouillon. Mais, ds le prog, la même fonction avec les mêmes paramètres fonctionne parfaitement. Je m'en aperçois maintenant. C'est dû, sans doute, à une ambiguïté des variables globales.
La fonction appelée se situe dans une unité 'Routines_Fichiers.pas', liée en USES. Or, les variable globales ci-dessus : Creation, Der_Acces et Der_Modif étaient déclarée, dans le projet brouillon, en tant que variables globales de l'unité principale.
Partager