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 :

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;
La fonction (d'ici) utilisée pour récupérer la date de la dernière modification du fichier :
( http://delphi.developpez.com/faq/?pa...-un-repertoire )
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;
Pourquoi cette "erreur de vérification d'étendue " ? Je suppose que ça vient du tableau, mais pourquoi ?

Variables générales :
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;
Résolution : J'ai refait ma structure de données. Ca plantait parce que j'utilisais des string au lieu de tableaux de char