IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Bug difficile sur un tableau dynamique, avec fonction fichier d'ici


Sujet :

Delphi

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 536
    Points : 121
    Points
    121
    Par défaut Bug difficile sur un tableau dynamique, avec fonction fichier d'ici
    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

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par bvsud Voir le message
    Résolution : J'ai refait ma structure de données. Ca plantait parce que j'utilisais des string au lieu de tableaux de char
    Dans ce cas, il y un bouton en bas de page qui permet d'indiquer que c'est résolu !
    Philippe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tableau Croisé dynamique avec fonction joursentre
    Par raphael1008 dans le forum Deski
    Réponses: 10
    Dernier message: 13/07/2011, 22h31
  2. [Tableaux] Tableau dynamique avec php
    Par Ricus28 dans le forum Langage
    Réponses: 3
    Dernier message: 01/08/2006, 22h46
  3. [Javascript] Question pas difficile sur des listes dynamique...
    Par mulbek dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2006, 09h55
  4. [VBA-E] bouton dynamique avec fonction
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 38
    Dernier message: 06/02/2006, 12h43
  5. Création d'un tableau dynamique avec XSL-FO
    Par lionelbrizuela dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/01/2006, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo