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

 C++ Discussion :

Suppression d'un repertoire incomplete


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2013
    Messages : 17
    Par défaut Suppression d'un repertoire incomplete
    Bonjour,
    j'ai un problème car dans mon programme je dois supprimer un répertoire qui a des sous dossiers, le problème est que quant j'utilise TDirectory:: Delete ou la fonction ci dessous trouvée sur se site mais dans les deux cas il me reste le répertoire principal et un ou deux sous dossier vides...
    Deux jours que je galère et ne pige pas d’où vient le problème?
    je programme en XE7 ou en C++ builder 6
    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
     
     void __fastcall DeleteRecursif(AnsiString pmRep)
    {
      TSearchRec SearchRec;
       int Attributes = 0;
       AnsiString bcRep = "",
                  bcRepTemp = "",
                  bcFile = "";
     
       Attributes |= faAnyFile;
       bcRep = pmRep;
       if(bcRep[bcRep.Length()] != '\\')
       {
          bcRep+= "\\";
       }
       bcRepTemp = bcRep;
       bcRep+= "*.*";
       if(FindFirst(bcRep, Attributes, SearchRec) == 0)
       {
          do
          {
             bcFile = SearchRec.Name;
             if(bcFile != "." && bcFile != "..")
             {
                bcFile = bcRepTemp + SearchRec.Name;
                if(SearchRec.Attr != faDirectory)
                {
                   DeleteFile(bcFile);
                }
                else
                {
                   DeleteRecursif(bcFile);
                }
             }
          }
          while (FindNext(SearchRec) == 0);
          FindClose(SearchRec);
       }
       RemoveDir(pmRep);
    }

  2. #2
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2013
    Messages : 17
    Par défaut
    bon en fait j'ai trouvé d’où viens le problème car quand je supprime le code plus bas cela marche
    mais j'aimerais garder ce code et je ne vois pas l'erreur
    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
    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
     
    void scan_dir3(char Rep[], TTreeNode *p)
    {
    	char CopieRep[1000];
    	lstrcpy(CopieRep, Rep);
    	WIN32_FIND_DATA fd;
            String asFic;
            String asFic2;
    	char Nom[1000]="";
            int z;
    	lstrcpy(Nom, CopieRep);
            lstrcat(Nom, "*.*");
    	HANDLE h = FindFirstFile(Nom, &fd);
            bool res = true;
    	bool FirstFile=false;
     
    	if (h!=INVALID_HANDLE_VALUE)
            {
    			while (res && !Stopper)
                            {
                                     // Routine de memorisation des fichiers + chemin
    				asFic2=(fd.cFileName);
                                     asFic=(Nom);
                                     if  (asFic2!="." )
                                     {
    						if (asFic2!="..")
                                                    {
                                                            asFic=asFic.SubString(1, asFic.Length()-3);// Supprime *.*
                                                            if (asFic2.Pos("*.*")==0)
                                                            {
    								if (imgPath == "")
                                                                     {
                                                                           tp=(asFic+asFic2);
                                                                           fil=ExtractFileName(tp);
    									if (fil==VarDansBoucleDeRecherche)
    									{
    										imgPath=ExtractFilePath(tp);
                                                                             }
                                                                       }
                                                                 }
    							}
                                               }
                                               asFic="";
                                               asFic2="";
    					   if (lstrcmp(fd.cFileName, "..") && lstrcmp(fd.cFileName, "."))
                                               {
                                                    if (fd.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
                                                    {// Traitement de répertoire
    							nbRep++;
                                                            char N[1000];
                                                            lstrcpy(N, CopieRep); lstrcat(N, fd.cFileName);
                                                            lstrcat(N, "\\");
    						        if (FirstFile)
                                                            {
                                                                  FirstFile = false;
                                                             }
    							 else
                                                             scan_dir3(N, p);
                                                    } 
                                                    else
    						{
                                                           nbFiles++;
                                                           if (FirstFile)
                                                           {
    					                    FirstFile = false;
                                                            }
                                                      }
                                           }
    						res = FindNextFile(h, &fd);
                              }
               }
    }

Discussions similaires

  1. Suppression d'un repertoire impossible
    Par ram-0000 dans le forum Windows 7
    Réponses: 3
    Dernier message: 17/11/2013, 18h53
  2. Suppression d'un repertoire
    Par diakite4 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 10/06/2010, 01h11
  3. Probleme de suppression d'un repertoire
    Par zaineb.z dans le forum ASP.NET
    Réponses: 3
    Dernier message: 16/04/2008, 11h07
  4. Suppression d'un repertoire non vide
    Par randriamanana dans le forum C#
    Réponses: 2
    Dernier message: 19/11/2007, 06h26
  5. [C#]Pourquoi cette erreur à la suppression d'un repertoire ?
    Par prince_antonio dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2006, 17h47

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