Sommaire  
 
 
Programmation
• ASP
• C++
• C++ Builder
• DirectX
• Java
• Javascript
• Perl
• PHP3
• SQL

Liens
• Annuaire
• Gagnez de l'argent

Utile
• Lexique

Contact
• Courrier
• Formulaire

A propos :
• Des auteurs
 

C++ Builder / Affichage du contenu d'un disque

 

Pour faire fonctionner ce code source, il faut:

Un TTreeview nommé : Arbre

Une TImageList avec 2 icones pour la propriété Images du TTreeView

Modifier le nom de la fenêtre TfwMenu par la vôtre

Passer comme paramètre à la fonction CreationArbre (ex: "C:\\")



#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
}

Site Créé
le 1 Octobre 1999
 
 
>