Bonjour à tous
Je liste, dans un tableau dynamique de structures, quelques informations sur des fichiers. Type de la structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Type Infos_F = record Nom_Cplt_F : string; // avec son path Nom_Court_F : string; // sans son path Surface_F : int64; Date_Der_Modif : TDateTime; end;
Ma procédure :
La fonction (d'ici) utilisée pour récupérer la date de la dernière modification du fichier :
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 Procedure Remplir_Tab_F_Source; Var i : integer; Index : integer; Date_Der_Modif_F : TDateTime; Date_Creation : TDateTime; Date_Der_Acces : TDateTime; begin ITF_Rempir_Tab_Source; SetLength(Tab_F_Source, Nb_F_Source_Listes_Ds_Tab_F_Source); For i := 0 TO (Nb_F_Source_Listes_Ds_Tab_F_Source -1) DO begin Tab_F_Source[i].Nom_Cplt_F := Lst_F_Ds_Source.Strings[i]; Tab_F_Source[i].Nom_Court_F := ExtractFilePath(Lst_F_Ds_Source.Strings[i]); Tab_F_Source[i].Surface_F := GetFileSize(Lst_F_Ds_Source.Strings[i]); GetFileTimes(Tab_F_Source[i].Nom_Cplt_F, Date_Creation, Date_Der_Acces, Date_Der_Modif_F); //DEBUG C'est ici ! // A l'ouverture du F par la fonction. //J'ai repéré ça en "pas à pas". Et ça ne peut pas venir de la fonction de ce site. Tab_F_Source[i].Date_Der_Modif := Date_Der_Modif_F; end; Date_Der_Modif_F := Tab_F_Source[Index].Date_Der_Modif; ... end;
( http://delphi.developpez.com/faq/?pa...-un-repertoire )
Pourquoi cette "erreur de vérification d'étendue " ? Je suppose que ça vient du tableau, mais pourquoi ?
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 // C'EST ICI : erreur de vérfification d'étendue 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;
Variables générales :
Résolution : J'ai refait ma structure de données. Ca plantait parce que j'utilisais des string au lieu de tableaux de char
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 Tab_F_Source : array of Infos_F; // Tableau dynamique Tab_F_Dest : array of Infos_F; // Tableau dynamique Nb_Rep_Source_Listes_Ds_Tab_Rep_Source : integer; Nb_F_Source_Listes_Ds_Tab_F_Source : integer; Nb_Rep_Dest_Listes_Ds_Tab_Rep_Dest : integer; Nb_F_Dest_Listes_Ds_Tab_F_Dest : integer; Lst_Rep_Ds_Source : TStringLIst; Lst_Rep_Ds_Dest : TStringLIst; Lst_F_Ds_Source : TStringLIst; Lst_F_Ds_Dest : TStringList; Rep_Dest_Sauvegarde_Debug : string;
Partager