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

WinDev Discussion :

Problème de surveillance d'un répertoire [WD20]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut Problème de surveillance d'un répertoire
    Bonjour,

    Je développe une application dont l'objectif est de faire une surveillance d'un répertoire RepA ainsi que ses sous répertoires SousRepA.
    Lors d'un ajout d'un fichier .TXT dans un sous répertoire SousRepA celui-ci est copié à la racine RepA et son contenu est transféré dans la base de données.
    Tout fonctionne avec ce bout de code :
    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
     
    RepIn est une chaîne = "C:\RepA"
     
     
    PROCEDURE _TraitementRépertoire(sNomRépertoire est une chaîne, sNomFichier est une chaîne, nTypeChangement est un entier, sParamètre)
     
    sMessage est une chaîne
    sElément est une chaîne = sNomRépertoire + ["\"] + sNomFichier
    res est un booléen
     
    SELON nTypeChangement
           CAS fsSuppressionFichier
                          .....
                           ……	
    	CAS fsCréationFichier		
    		// On teste l'existence du fichier, s'il n'existe pas, c'est un répertoire
    		SI fFichierExiste(sElément) = Faux ALORS
    			// C'est un répertoire
    			sMessage = ChaîneConstruit("Le répertoire <%1> a été ajouté", sElément)	
    		SINON
     
    			sMessage = ChaîneConstruit("Le fichier <%1> a été ajouté", sElément)
    			//si création d'un nouveau fichier on le transfert dans le répertoire principal
    			SI PAS(sElément [~] "SousRepA") ALORS// on vérifie que c'est pas le dossier SousRepA avant 
    			HImporteTexte(TABLE_DONNEES, sElément, "Champ1, Champ2, Champ3, Champ4, Champ5, Champ6", "," + Caract(127) + """" + Caract(127) + RC + Caract(127) + ".",hImpTestDoublon)//hImpCréation)
    			FIN
    			//On supprime chaque fichier du répertoire RepA avant d'y copier un autre.
    			SI fFichierExiste(RepIn + "\fichier.txt")=Vrai ET sElément <>  RepIn + "\fichier.txt" ALORS // Si c'est le même répertoire pas de suppression
    				fSupprime(RepIn + "\fichier.txt")			
    			FIN
    			res = fCopieFichier(sElément, RepIn + "\ fichier.txt")//une copie est une nouvelle création de fichier
    			TableAffiche(TABLE_ DONNEES, taDébut)
     
     
    		FIN
    	CAS fsRenommage
    		         ....
                          ……		
    	CAS fsModificationFichier
    	               ....
                          ……	
    AUTRE CAS
    		         .....
                          ……
    FIN
    Le problème : quand je fais un test de copier/coller simultané de 5 fichiers .TXT dans un sous répertoire SousRepA il ne traite que Un Seul Fichier et les 4 fichiers sont oubliés par l'application. Car l'objectif est qu'après la copie dans RepA, le contenu soit envoyé à la base, on supprime le fichier pour passer au suivant qui arrive en copie depuis SousRepA comme si on traitait une file d'attente.

    J'ai cherché la solution du coté des sémaphores et Treads mais sans succès:

    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
     
    SémaphoreCrée("SM_LIMITE")
     
     
                    .....
                    ……
     
     
    RepIn est une chaîne = "C:\RepA"
     
     
    PROCEDURE _TraitementRépertoire(sNomRépertoire est une chaîne, sNomFichier est une chaîne, nTypeChangement est un entier, sParamètre)
     
    sMessage est une chaîne
    sElément est une chaîne = sNomRépertoire + ["\"] + sNomFichier
    res est un booléen
     
    SémaphoreDébut("SM_LIMITE")
     
     
    SELON nTypeChangement
           CAS fsSuppressionFichier
                          .....
                           ……	
    	CAS fsCréationFichier		
    		// On teste l'existence du fichier, s'il n'existe pas, c'est un répertoire
    		SI fFichierExiste(sElément) = Faux ALORS
    			// C'est un répertoire
    			sMessage = ChaîneConstruit("Le répertoire <%1> a été ajouté", sElément)	
    		SINON
     
    			sMessage = ChaîneConstruit("Le fichier <%1> a été ajouté", sElément)
    			//si création d'un nouveau fichier on le transfert dans le répertoire principal
    			SI PAS(sElément [~] "SousRepA") ALORS// on vérifie que c'est pas le dossier SAV avant 
    			HImporteTexte(TABLE_DONNEES, sElément, "Champ1, Champ2, Champ3, Champ4, Champ5, Champ6", "," + Caract(127) + """" + Caract(127) + RC + Caract(127) + ".",hImpTestDoublon)//hImpCréation)
    			FIN
    			//On supprime chaque fichier du répertoire RepA avant d'y copier un autre.
    			SI fFichierExiste(RepIn + "\fichier.txt")=Vrai ET sElément <>  RepIn + "\fichier.txt" ALORS // Si c'est le même répertoire pas de suppression
    				fSupprime(RepIn + "\fichier.txt")			
    			FIN
    			res = fCopieFichier(sElément, RepIn + "\ fichier.txt")//une copie est une nouvelle création de fichier
    			TableAffiche(TABLE_ DONNEES, taDébut)
     
     
    		FIN
    	CAS fsRenommage
    		         ....
                          ……		
    	CAS fsModificationFichier
    	               ....
                          ……	
    AUTRE CAS
    		         .....
                          ……
    FIN
    SémaphoreFin("SM_LIMITE")
     
     
     
     
     
    …….
    …….
    SémaphoreDétruit("SM_LIMITE")

    Une idée ?
    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    La procédure _TraitementRépertoire est une procédure callBack
    Comment fais tu appel à celle-ci ?

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par dsr57 Voir le message
    Bonjour

    La procédure _TraitementRépertoire est une procédure callBack
    Comment fais tu appel à celle-ci ?

    Bon dev
    Bonjour,

    Voici comment je l'appelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SI BTN_On_Off..Enfoncé = Vrai ALORS
    	//traitements
     
    	fSurveilleRépertoire(RepIn,_TraitementRépertoire,fsCréationFichier + fsSuppressionFichier + fsModificationFichier + fsRenommage)
     
    SINON		
    	// Arrête la surveillance
    	fSurveilleStopTout()	
    FIN

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Tu dis que tu fais l'ajout de 5 fichiers en simultané, mais je ne vois pas les "rappels" de ta procédure.
    Pour moi, il ne traite qu'un seul fichier, tu devais : avoir un flistefichier dans ta procédure
    ou un appel récursif de ta procédure pour qu'elle travaille autant de fois que nécessaire
    ou un paramétrage de ton thread pour qu'il recommence ses traitements en permanence.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Tu dis que tu fais l'ajout de 5 fichiers en simultané, mais je ne vois pas les "rappels" de ta procédure.
    Pour moi, il ne traite qu'un seul fichier, tu devais : avoir un flistefichier dans ta procédure
    ou un appel récursif de ta procédure pour qu'elle travaille autant de fois que nécessaire
    ou un paramétrage de ton thread pour qu'il recommence ses traitements en permanence.
    Bonjour,

    C'est une des difficultés que j'ai, celle de pouvoir traiter tous les derniers fichiers ajoutés dans le sous répertoire SousRepA. Windows fait une copie en parallèle des fichiers dans le sous répertoire, alors que moi j'ai besoin de traiter uniquement les derniers fichiers déposés (un par un comme une file d'attente), c'est-à-dire si j'ai 2 fichiers ajoutés dans le sous répertoire, je ne veux traiter que ceux-la, pas ceux qui y étaient avant.Ils seront l'un après l'autre, copié à la racine, le contenu transféré dans la base de données et supprimé.La fonction fListeFichier() gère une liste de tous les fichiers d'un répertoire je crois, alors je ne sais pas comment prendre que les dernier fichiers ajoutés. Je regarde aussi les sémaphores mais n'ai pas encore trouvé de solution.

    Merci

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Bonjour
    Tu pourrais utiliser cette fonction :

    http://doc.pcsoft.fr/fr-FR/?3036010&name=fAttribut

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Yusep Voir le message
    Bonjour
    Tu pourrais utiliser cette fonction :

    http://doc.pcsoft.fr/fr-FR/?3036010&name=fAttribut
    Bonjour,

    Avec cette fonction, je ne vois pas comment faire le traitement. Pour les attributs s'il y avait la date de modification, je pourrais m'y baser pour prendre en compte uniquement les derniers fichiers.

    Merci

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Apres le traitement tu desactive l'attribut A
    Donc tous les nouveaux fichiers auront l'attribut A active.
    Voila

  9. #9
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Il n'y a pas un souci sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res = fCopieFichier(sElément, RepIn + "\ fichier.txt")//une copie est une nouvelle création de fichier
    Tu copies les fichiers avec le même nom de destination, tous les fichiers sont bien traités mais sont copiés avec le même nom de destination.
    ce qui donne l'impression que un seul fichier est traité.

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Yusep Voir le message
    Apres le traitement tu desactive l'attribut A
    Donc tous les nouveaux fichiers auront l'attribut A active.
    Voila
    Bonjour,

    Ok, j'essaye et je te tiens au courant,

    Merci

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par dsr57 Voir le message
    Bonjour

    Il n'y a pas un souci sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    res = fCopieFichier(sElément, RepIn + "\ fichier.txt")//une copie est une nouvelle création de fichier
    Tu copies les fichiers avec le même nom de destination, tous les fichiers sont bien traités mais sont copiés avec le même nom de destination.
    ce qui donne l'impression que un seul fichier est traité.

    Bon dev
    Bonjour,

    Tu as bien vu, c'est l'objectif que tous les fichiers copiés du sous répertoire SousRepA vers le répertoire principale atterrissent avec le même nom, car il y a une autre application (.exe) dans ce répertoire qui ne traite que des fichiers du même noms fichier.txt. Alors quand je fais des copies une par une dans les sous répertoires, tout fonctionne bien ( c'est-à-dire quelque soit le fichier texte qui arrive au sous répertoire, est transferé au principal avec le nom fichier.txt, copié dans la base et supprimé s'il arrive une nouvelle copie de SousRepA. Après le seul problème c'est la copie simultanée de plusieurs fichiers, dans ce cas un seul fichier est traité.

  12. #12
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Citation Envoyé par JohnVist Voir le message
    Bonjour,

    C'est une des difficultés que j'ai, celle de pouvoir traiter tous les derniers fichiers ajoutés dans le sous répertoire SousRepA. Windows fait une copie en parallèle des fichiers dans le sous répertoire, alors que moi j'ai besoin de traiter uniquement les derniers fichiers déposés (un par un comme une file d'attente), c'est-à-dire si j'ai 2 fichiers ajoutés dans le sous répertoire, je ne veux traiter que ceux-la, pas ceux qui y étaient avant.Ils seront l'un après l'autre, copié à la racine, le contenu transféré dans la base de données et supprimé.La fonction fListeFichier() gère une liste de tous les fichiers d'un répertoire je crois, alors je ne sais pas comment prendre que les dernier fichiers ajoutés. Je regarde aussi les sémaphores mais n'ai pas encore trouvé de solution.

    Merci
    Il faut que tu mémorise les noms des fichiers déjà traités d'une manière ou d'une autre (dans un fichier hf, texte, xml,..). Au lancement de ton appli, tu charges cette liste en mémoire. Lorsque tu fais ton flistefichier, tu regarde si le fichier est déjà présent dans ta liste. Si oui, tu l'ignores. Si non, tu le traites et tu l'ajoute à la liste. Liste que tu sauveras à un moment ou à un autre...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  13. #13
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Avant de poster hier, j'ai testé le code

    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
    RepIn est une chaîne = "C:\RepA"
     
     
    PROCEDURE _TraitementRépertoire(sNomRépertoire est une chaîne, sNomFichier est une chaîne, nTypeChangement est un entier, sParamètre)
     
    sMessage est une chaîne
    sElément est une chaîne = sNomRépertoire + ["\"] + sNomFichier
    res est un booléen
     
    SELON nTypeChangement
           CAS fsSuppressionFichier
                          .....
                           ……	
    	CAS fsCréationFichier		
    		// On teste l'existence du fichier, s'il n'existe pas, c'est un répertoire
    		SI fFichierExiste(sElément) = Faux ALORS
    			// C'est un répertoire
    			sMessage = ChaîneConstruit("Le répertoire <%1> a été ajouté", sElément)	
    		SINON
     
    			sMessage = ChaîneConstruit("Le fichier <%1> a été ajouté", sElément)
    			//si création d'un nouveau fichier on le transfert dans le répertoire principal
    			SI PAS(sElément [~] "SousRepA") ALORS// on vérifie que c'est pas le dossier SousRepA avant 
    			HImporteTexte(TABLE_DONNEES, sElément, "Champ1, Champ2, Champ3, Champ4, Champ5, Champ6", "," + Caract(127) + """" + Caract(127) + RC + Caract(127) + ".",hImpTestDoublon)//hImpCréation)
    			FIN
    			//On supprime chaque fichier du répertoire RepA avant d'y copier un autre.
    			SI fFichierExiste(RepIn + "\fichier.txt")=Vrai ET sElément <>  RepIn + "\fichier.txt" ALORS // Si c'est le même répertoire pas de suppression
    				fSupprime(RepIn + "\fichier.txt")			
    			FIN
    			res = fCopieFichier(sElément, RepIn + "\ fichier.txt")//une copie est une nouvelle création de fichier
    			TableAffiche(TABLE_ DONNEES, taDébut)
     
     
    		FIN
    	CAS fsRenommage
    		         ....
                          ……		
    	CAS fsModificationFichier
    	               ....
                          ……	
    AUTRE CAS
    		         .....
                          ……
    FIN
    J'ai créé 2 répertoires et copier 5 fichier dans le répertoire source.
    Si je modifie le nom du fichier de sortie avec un random

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fCopieFichier(sElément, RepIn + "\ fichier.txt")
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fCopieFichier(sElément, RepIn + "\ fichier"+random+".txt")
    j'ai bien les 5 fichiers dans mon répertoire de destination.
    As tu essayé de mettre un point d'arrêt ou une trace pour vérifier ton nombre de passage dans la procédure

    Si le nombre de passage est ok

    car il y a une autre application (.exe) dans ce répertoire qui ne traite que des fichiers du même noms fichier.txt
    Le problème peut venir de là, ton exe bloque la copie des autres fichiers

    • Test le retour de ta fonction fCopieFichier
    • Ennlève cet exe pour effectuer des tests


    BOn dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Bonjour dsr57,
    Je te remercie d'avoir testé le code pour apporter ton aide. en effet, si j'utilise la fonction random
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fCopieFichier(sElément, RepIn + "\ fichier"+random+".txt")
    comme tu l'as fait pour modifier le fichier de destination, mon application ne fonctionnera pas puisque l'application (.exe) ne peut traiter que des fichiers du même nom fichier.txt

    Test le retour de ta fonction fCopieFichier
    Ennlève cet exe pour effectuer des tests
    Pour l'instant je fais mes tests sans l'application (.exe), je l'ai mentionné pour signifier qu'il est obligatoire qu'un fichier copié de SousRepA ver RepA doit avoir le nom "\fichier.txt".

    Le problème : mon code est un code de surveillance donc en temps réel. Quand je copie un seul fichier ( peu importe son nom) dans SousRepA il est bien traité (copié vers RepA avec le nom fichier.txt puis dans la base, supprimé pour laisser la place au traitement d'un autre fichier) .
    Alors quand je copie 5 ,6...ou 1000 fichiers simultanément dans SousRepA, quand mon code traite un fichier( copie etc..), il ne fait plus cas des autres, alors je pense que la solution serait que lors d'une copie de plusieurs fichiers dans SousRepA, il faudra une file d'attente pour ne zapper aucun fichier, ce que je ne sais pas encore faire.

    La preuve quand je copie un fichier dans SousRepA puis quelques secondes après un autre, l'application fonctionne sans problème.Puisque qu'en réalité le code prend du temps pour copié le fichier du sous répertoire au répertoire principal, ensuite copier son contenu pour enfin le supprimer.

    Merci

  15. #15
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Question : si la copie avec le random de dsr57 fonctionne, pourquoi ne pas copier tous tes fichiers "randomisés" dans un répertoire temporaire et les copier en les renommant "fichier.txt" dans le repA. Il te faudra gérer une tempo, afin d'être sûr que ton fichier a été intégré par ton exe avant d'en copier un autre.

    Une idée : plutôt que de renommer le fichier en random, pourquoi ne le renommer "SousRepX" + fdate() + fheure () + fichier.txt" ?

    Une question que je me pose : comment sais-tu que le fichier "sousRepA\fichier.txt" est déjà passé par ton exe ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  16. #16
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    comment sais-tu que le fichier "sousRepA\fichier.txt" est déjà passé par ton exe ?
    Je me pose la même question, peut être le même procédé une serveillance du répertoire sur la création de fichier, à confirmer par JohnVist

    La preuve quand je copie un fichier dans SousRepA puis quelques secondes après un autre, l'application fonctionne sans problème.Puisque qu'en réalité le code prend du temps pour copié le fichier du sous répertoire au répertoire principal, ensuite copier son contenu pour enfin le supprimer.
    Dans le cas d'ajout de plusieurs fichiers d'un seul coup (5, 10, 100, ....) si tu tests le retour des fonctions fSupprime et fCopieFichier tu devrais avoir un message d'erreur.

    Dans un premier temps, j'ajouterai des tests de retour sur ces fonctions pour avoir plus d'informations (et cela ne fait jamais de mal de tester le retour d'une fonction ...)

    Il doit y avoir un blocage, je testerai avec une temporisation lors de la suppression


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TANTQUE PAS fSupprime(RepIn + "\fichier.txt")
         Temporisation(xx)
    FIN

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Bonjour dsr57 et frenchsting

    Merci pour votre aide,

    comment sais-tu que le fichier "sousRepA\fichier.txt" est déjà passé par ton exe ?
    Je me pose la même question, peut être le même procédé une serveillance du répertoire sur la création de fichier, à confirmer par JohnVist
    L'exe qui se trouve dans le répertoire racine RepA a pour objectif de décrypter les fichiers "fichier.txt", et uniquement les fichiers portant ce nom.
    En effet, les fichiers déposés dans SousRepA sont cryptés, et mon programme consiste à copier les fichiers cryptés vers RepA, les décrypter (avec .exe) ensuite les copier dans la base de données puis les afficher sur l'interface.

    Donc je sait que les fichiers ont été exécutés si l'interface affiche un texte décrypté.

    J'ai testé l'idée de la temporisation mais pas encore abouti, je pense que jusqu'à présent vous m'avez donné pas mal d'idées, je les essayerais les unes après les autres puis vous tiendrais au courant.

    Merci.

  18. #18
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Ca ne nous dit toujours pas comment tu sais si dans ton arborescence ton fichier est traité.
    Pour moi, si le fichier est traité, il doit être soit archivé (et renommé par ex : soursrepa_20150421_10112565_fichier.txt), soit supprimé.

    De plus, si tu les laisses en place, ton ensemble de sous répertoires va devenir ingérable (ralentir tes temps de traitement ?).
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  19. #19
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Ca ne nous dit toujours pas comment tu sais si dans ton arborescence ton fichier est traité.
    Pour moi, si le fichier est traité, il doit être soit archivé (et renommé par ex : soursrepa_20150421_10112565_fichier.txt), soit supprimé.

    De plus, si tu les laisses en place, ton ensemble de sous répertoires va devenir ingérable (ralentir tes temps de traitement ?).
    Oui tout fichier traité dans RepA est supprimé. En ce qui concerne la gestion des fichiers du sous répertoire restent tels quels. J'ai besoin de garder ces fichiers pour vérification.

  20. #20
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    J'ai bien compris que l'exe de conversion/intégration consommait (et supprimait) le fichier dès qu'il était dans RepA.

    Par contre, un fichier dans le sous répertoire sousRepxxxx, comment sais tu que tu l'as déjà copié dans le RepA ? C'est ma question.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/12/2007, 20h17
  2. Problème d'ouverture d'un répertoire
    Par pouette13 dans le forum MATLAB
    Réponses: 4
    Dernier message: 27/07/2007, 16h32
  3. Réponses: 2
    Dernier message: 23/02/2007, 14h22
  4. Problème d'include et sous-répertoires
    Par didou038 dans le forum Langage
    Réponses: 6
    Dernier message: 22/12/2006, 10h46
  5. problème avec les chemins de répertoire
    Par psychoBob dans le forum Langage
    Réponses: 12
    Dernier message: 28/05/2006, 10h39

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