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++Builder Discussion :

Activer et desactiver une fonction


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    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
    Points : 10
    Points
    10
    Par défaut Activer et desactiver une fonction
    Bonjour
    j'ai une fonction dans mon programme qui m’empêche de supprimer des dossier
    comment l'activer et la desactiver ?

    voici la fonction
    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);
                              }
               }
    }
    Merci

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    Salut, tu ajoutes une condition à l'appelle de la fonction?
    • Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
    • Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
    • Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon

  3. #3
    Membre à l'essai
    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
    Points : 10
    Points
    10
    Par défaut
    Bonsoir crayon
    non je l'appelle juste pour rechercher un fichier

    j'ai essayé p->delete() de TTreeNode *p mais il plante le proc

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Bonsoir,

    Le problème doit provenir d'un pointeur sur un fichier qui a permis de l'ouvrir et qui n'a pas été refermé.
    Le code semble vraiment mal optimisé et utiliser un algorithme compliquer pour faire pas grand chose.

    Par exemple, au lieu d'essayer d'enlever l'extension, tu peux utiliser la fonction ChangeFileExt(NomFichier,"").

    Essaie d'activer CodeGuard pour détecter le problème ou réécrit ta fonction.

    La FAQ a des exemples de manipulation de fichiers et répertoires.
    http://cpp.developpez.com/faq/bcb/?p...n-des-fichiers

    De plus, ton paramètre TTreeNode *p ne semble pas utilisé. C'est normal ?
    Que veux-tu faire exactement ?

    Bonne soirée.

  5. #5
    Membre à l'essai
    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
    Points : 10
    Points
    10
    Par défaut
    merci pour la réponse
    hier soir j'ai résolu mon problème en mettant FindClose(h); en fin de fonction et çà a l'air de fonctionner.

  6. #6
    Membre à l'essai
    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
    Points : 10
    Points
    10
    Par défaut
    Merci
    j'essaye de faire une fonction récursive qui scan un répertoire et ses sous dossiers pour voir si un fichier est présent

  7. #7
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Je pense que la FAQ propose directement la fonction récursive ce que tu veux faire.
    C'est plus court, plus facile à maintenir et ça devrait être plus rapide. Il ne reste qu'à gérer l'arrêt dès que le programme trouve un fichier.

    http://cpp.developpez.com/faq/bcb/?p...iere-recurcive

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/06/2011, 22h08
  2. activer et desactiver une aide dans tout un site
    Par trenkwill dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/03/2009, 19h40
  3. [SQL] comment "desactiver" une fonction php dans une page?
    Par horas dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/05/2007, 15h04
  4. activer une fonction d'une page contenue dans une popup.
    Par manutudescends dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/08/2006, 14h32
  5. Activer/Desactiver une connexion au réseau local
    Par Yodagobah dans le forum MFC
    Réponses: 7
    Dernier message: 05/01/2005, 17h17

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