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



Comment lister les fichiers d'un répertoire ?
auteur : Geronimo
Pour lister les fichiers d'un répertoire, nous allons faire appel aux fonctions FindFirst , FindNext et FindClose ainsi qu'à la structure TSearchRec .
void TForm1::Search(AnsiString FilePath, TStringList * Extensions, TStrings * ListeFichiers)
{
    TSearchRec Infos_fichier;
    if (!FindFirst(FilePath+"*.*", faAnyFile, Infos_fichier))

    do
    {
        for (int i=0; iExtensions-Count; i++)
        {
            if (ExtractFileExt(Infos_fichier.Name).LowerCase() == Extensions-Strings[i].LowerCase())
                ListeFichiers-Add(ExpandFileName(Infos_fichier.Name));
        }
    }
    while(!FindNext(Infos_fichier));

    FindClose(Infos_fichier);
}
Voici donc notre fonction. Les paramètres qui doivent lui être passés sont respectivement FilePath , le répertoire dans lequel il faut faire la recherche, Extensions , la liste des extensions à recenser et enfin, ListeFichiers , un objet de type TStrings dans lequel on récupère la liste des fichiers. La fonction crée une structure Infos_fichier qui permettra à la fonction FindFirst de stocker des informations sur les fichiers trouvés. Regardez l'aide sur FindFirst pour avoir plus de précisions sur celle-ci. Sachez simplement qu'elle attend en premier argument le répertoire de recherche, en second argument le type de fichiers à rechercher et enfin, la structure dans laquelle elle va stocker ses données. Cette fonction retourne 0 si elle trouve un fichier. Dans ce cas, on commence la boucle do...while. C'est la fonction FindNext qui prend le relais, FindFirst ne servant que pour la première fois. Ensuite, on parcourt la liste des extensions et on regarde si l'extension du fichier trouvé SRec.Name correspond à une de la liste, dans ce cas, on l'ajoute. Enfin, on libère la mémoire allouée dans la structure avec FindClose. Cette fonction peut être utilisée de la manière suivante. Placez une ListBox sur votre fiche :
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TStringList *Extensions = new TStringList; // On construit la liste des extensions
    Extensions->Add(".cpp");
    Extensions->Add(".h");
    // Appel à notre fonction, avec pour liste des fichiers, les items de la ListBox.
    Search(ExtractFilePath(Application->ExeName), Extensions, ListBox1->Items); 
    delete Extensions;
}

Comment ouvrir plusieurs fichiers avec une OpenDialog ?
auteur : Geronimo
Sélectionnez la boite de dialogue d'ouverture. Dans sa propriété Options , positionnez ofAllowMultiSelect à true . Ensuite, là où vous souhaitez ouvrir les fichiers, placez le code suivant :
if (OpenDialog1->Execute())
{
     for (int i=0; iOpenDialog1->Files->Count; i++)
             Ouvrir(OpenDialog1->Files->Strings[i]);
}
Le membre Files de OpenDialog1 contient la liste des fichiers sélectionnés. Il suffit donc de parcourir cette liste et d'ouvrir chaque fichier. Nous faisons appel pour cela à une fonction Ouvrir , que vous pouvez écrire en pour votre programme.

Comment copier un fichier ?
auteur : Geronimo
Utilisez la fonction CopyFile. Le code ci-dessous permet à l'utilisateur de choisir un fichier source et de choisir sous quel nouveau nom il souhaite le copier. Placez sur votre fiche une OpenDialog et une SaveDialog :
if (OpenDialog1->Execute())
{
      if (SaveDialog1->Execute())
      {
            if (!CopyFile(OpenDialog1->FileName.c_str(), SaveDialog1->FileName.c_str(), true))
                  ShowMessage("Impossible de copier");
      }
}
Cette fonction copie le fichier si l'utilisateur valide les boites de dialogue. La fonction prend pour argument deux chaînes à zéro-terminal (source et destination) et un booléen qui indique si la fonction doit écraser un fichier déjà existant : true , la fonction n'écrase pas, false , la fonction écrase le fichier. La fonction retourne 0 si elle échoue d'où notre test pour afficher un dialogue si la copie n'a pas eu lieu.

Comment déplacer un fichier ?
auteur : Geronimo
Pour déplacer un fichier (ou un répertoire), utilisez la fonction MoveFile. Voici le code permettant de déplacer un fichier, après demande du fichier d'origine et destination grâce à une OpenDialog et une SaveDialog :
if (OpenDialog1->Execute())
{
      if (SaveDialog1->Execute())
      {
            if (!MoveFile(OpenDialog1->FileName.c_str(), SaveDialog1->FileName.c_str()))
                  ShowMessage("Impossible de déplacer");
      }
}
La fonction MoveFile échoue si le fichier destination existe déjà. Remarquez également que cette fonction prend pour argument des chaînes C à 0 terminal, d'où l'appel de la méthode c_str() qui convertit une chaîne AnsiString en chaîne à 0 terminal.

Comment changer l'extension d'un fichier ?
auteur : Geronimo
Pour changer l'extension d'un fichier, il existe une fonction ChangeFileExt. Le prototype de cette fonction est dans le fichier sysutils.h donc n'oubliez pas d'inclure celui-ci. Cette fonction s'utilise de la façon suivante :
// Change l'extension.txt en.dat
ChangeFileExt("fichier.txt", ".dat");
Cette fonction prend comme vous le voyez le fichier en premier argument et en second argument la nouvelle extension à attribuer à celui-ci.