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

Langage Delphi Discussion :

Comment passer un tableau dynamique en paramètre ?


Sujet :

Langage Delphi

  1. #1
    Membre du Club

    Inscrit en
    Décembre 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 52
    Points : 63
    Points
    63
    Par défaut Comment passer un tableau dynamique en paramètre ?
    Bonjour,

    je souhaite passé un tableau dynamique en paramètre à une fonction.
    Cett fonction récupère la liste des fichier dans un dossier avec leur icone associé et la stocke dans un tableau de type TFileInfo que j'ai crée.

    Ma fonction se trouve dans une autre unité.
    Code de la focntion
    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
    38
    39
    40
    41
    42
     
    type
      //Structure contenant les éléments caractéristiques d'un fichier
      TFileInfo = record
        {$IFDEF MSWINDOWS}
        FindData  : TWin32FindData  platform;
        {$ENDIF}
        Info      : SHFILEINFO;
    end;
    type TTFileInfo = array of TFileInfo;
     
    function RecupererInfosFichiersDuDossier(Infos : TTFileInfo;szDossier : string) : integer;
    var
      i         : integer;
      hFichier  : THandle;
    begin
    //On initialise le compteur
      i := 0;
    //On test si le dernier caractères est bien un \
      if AnsiLastChar(szDossier)^ <> '\' then  szDossier := szDossier + '\';
    //On trouve le premier fichier
      hFichier := FindFirstFile(PChar(szDossier+'*.*'), Infos[i].FindData);
    //On test le handle de ce fichier
      if hFichier <> INVALID_HANDLE_VALUE then
      begin
        repeat
          //On test si c'est un dossier
          if Infos[i].FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> FILE_ATTRIBUTE_DIRECTORY then
          begin
            //On récupère les Infos lié aux icones
            SHGetFileInfo(PChar(szDossier+Infos[i].FindData.cFileName),0,Infos[i].Info,sizeof(Infos[i].Info),SHGFI_LARGEICON or SHGFI_SYSICONINDEX);
            //On incrémente le compteur
            Inc(i);
            //On ajout une case au tableau
            //SetLength(Infos,High(Infos)+1);
          end;
          //On récupère le fichier suivant
        until FindNextFile(hFichier,Infos[i].FindData) = false;
      end;
      Windows.FindClose(hFichier);
      Result := i;
    end;
    Lorsque j'appelle la fonction comme ceci depuis ma fenêtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var 
    Fichiers      : TTFileInfo;
    begin
      SetLength(Fichiers,16);
      //Remplissage de la zone
      nb_fichier := RecupererInfosFichiersDuDossier(Fichiers, Edit1.Text);
    il n'y a pas de problème cela marche, le seul hic c'est que je ne sais pas combien de fichier il y a dans le dossier quand je fais mon SetLength().
    Je donc mis le SetLength() dans ma fonction en rajoutant un élément à ce tableau pour chaque fichier trouvé mais la variable Fichiers :TTFileInfo ne repercute pas le SetLength()

    Comment faire?
    Merci

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Tu déplace le SetLength dans la fonction, mais tu changes la signature en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function RecupererInfosFichiersDuDossier(var Infos : TTFileInfo;szDossier : string)
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre du Club

    Inscrit en
    Décembre 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    Ok Ca marche parfaitement merci beaucoup.

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

Discussions similaires

  1. FAQ: Comment allouer un tableau dynamique
    Par beb30 dans le forum C
    Réponses: 14
    Dernier message: 02/05/2006, 16h13
  2. [D7] passer un tableau dynamique en paramétre ?
    Par PhD13 dans le forum Langage
    Réponses: 6
    Dernier message: 11/01/2006, 18h09
  3. Réponses: 1
    Dernier message: 18/11/2005, 11h38
  4. Passage de tableau dynamique en paramètre
    Par Didier L dans le forum Langage
    Réponses: 3
    Dernier message: 08/09/2005, 23h04
  5. passer un tableau dynamique en parametre...
    Par annecyrond dans le forum Langage
    Réponses: 5
    Dernier message: 07/03/2003, 09h59

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