| 12
 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
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 
 |  
    #include <dirent.h> 
    #include <sys\stat.h> 
 
    #define REPERTOIRE
 
 
    0
 
 
    // Indice dans la liste des images
 
    #define FICHIER
 
 
    1
 
 
    // Indice dans la liste des images
    int __fastcall TfwMenu::CreationArbre(const AnsiString csDisquePar)
 
        { 
        DIR *dir; 
        struct dirent *ent; 
        struct stat statbuf; 
        AnsiString csFichier,csNomFichier; 
        TTreeNode * pNode; 
 
 
            Arbre->Items->Clear(); // On vide le TTreView Arbre 
            Arbre->SortType = stNone; // Pas de tri sur l'arbre 
            if ((dir = opendir(csDisquePar.c_str())) == NULL)
 
 
                return -1; //Impossible d'ouvrir 
 
            while ((ent = readdir(dir)) != NULL)
 
                { 
                csFichier = csDisquePar; 
                csFichier += ent->d_name; 
                if (stat(csFichier.c_str(),&statbuf) != 0)
 
 
                    return -3; // Pas d'information 
 
                csNomFichier = ent->d_name; 
                if (statbuf.st_mode & S_IFDIR)
 
                    { 
                    pNode = Arbre->Items->Add(NULL,csNomFichier); 
                    pNode->ImageIndex = REPERTOIRE; 
                    AfficherRepertoire(csFichier,pNode); 
                    } 
 
                if (statbuf.st_mode & S_IFREG)
 
                    { 
                    pNode = Arbre->Items->Add(NULL,csNomFichier); 
                    pNode->ImageIndex = FICHIER; 
                    } 
 
                }// Fin du while 
 
            if (closedir(dir) != 0)
 
 
                return -2; // Impossible de fermer 
 
            return 0; // Valeur par defaut 
 
        } 
 
 
    int __fastcall TfwMenu::AfficherRepertoire(const AnsiString csRepertoirePar,TTreeNode * pNodePar)
 
        { 
        DIR *dir; 
        struct dirent *ent; 
        struct stat statbuf; 
        AnsiString csFichier,csNomFichier; 
 
        TTreeNode * pNode;
        if ((dir = opendir(csRepertoirePar.c_str())) == NULL)
 
 
            return -1; //Impossible d'ouvrir 
 
        while ((ent = readdir(dir)) != NULL)
 
            { 
            // Constitution du chemin du fichier 
            csFichier = csRepertoirePar; 
            csFichier += "\\"; 
            csFichier += ent->d_name; 
            if (stat(csFichier.c_str(),&statbuf) != 0)
 
 
                return -3; // Pas d'information 
 
            csNomFichier = ent->d_name; 
            if (csNomFichier == ".") continue; 
            if (csNomFichier == "..") continue; 
            if (statbuf.st_mode & S_IFDIR)
 
                { 
                pNode = Arbre->Items->AddChild(pNodePar,csNomFichier); 
                pNode->ImageIndex = REPERTOIRE; 
                AfficherRepertoire(csFichier,pNode); // Récursivité 
                } 
 
            if (statbuf.st_mode & S_IFREG)
 
                { 
                pNode = Arbre->Items->AddChild(pNodePar,csNomFichier); 
                pNode->ImageIndex = FICHIER; 
                } 
 
            }// Fin du while 
 
        if (closedir(dir) != 0)
 
 
            return -2; // Impossible de fermer 
 
        return 0; // Valeur par defaut 
 
    } | 
Partager