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 :

Executable pour transfert de fichier automatique


Sujet :

C

  1. #41
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par souviron34
    Ta solution est correcte, mais moi je conseillerais plutôt ...
    Bin c'est aussi ce que je lui ai proposé !
    Citation Envoyé par Melem
    Normalement tu ne devrais pas modifier chemin_source_9 car tu en auras toujours besoin ... je pense.

  2. #42
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Merci encore pour votre soutien. Je vais essayer vos solutions et je vous tiens au courant. Mais le bout du tunnel n'est plus très loin c'est déjà ça !

  3. #43
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    J'ai trouvé une astuce pour copier dans une variable appelée ici "tata" le nom du fichier en cours.
    J'ai crée un compteur appelé "toto" qui s'incrémente à chaque passage dans la boucle do ... while. J'ai crée une condition qui s'exécute que lorsque toto vaut 2. tout ça pour éviter les "." et ".."

    Le problème à l'avenir c'est que s'il m'affiche qu'un point au lieu de 2 points, je sauterai donc la copie du premier fichier ...

    J'ai essayé ta solution Melem avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (ent.cFileName DIFFERENT_DE "." ET ent.cFileName DIFFERENT_DE "..")
    {
        /* Faire le traitement. */
    }
    Ca ne marche pas, j'ai remplacé DIFFERENT_DE par != , ET par && , mais rien n'y fait il m'affiche toujours mes points.

    Ensuite beaucoup mais alors beaucoup plus embétant. Afin d'obtenir le nom du fichier en cours de listage j'ai ajouté "strcpy(nom_fichier_copie, ent.cFileName);" dans mon programme. Dans le but de recopier par la suite le nom du fichier en cours dans la varaible tata.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    char nom_fichier_copie[5000][23], tata[23]; /* declaration */
     
    if ((hEnt = FindFirstFile("F:\\donnees\\goniometrie\\courts\\*.*", &ent)) != INVALID_HANDLE_VALUE)
                   { 
                             do
                             {
                             printf("%s\n", ent.cFileName);
                             strcpy(nom_fichier_copie, ent.cFileName);
                             strcpy(lpBuffer,ent.cFileName);
                             p = strtok(lpBuffer, separators);
                             i=0; /* etc etc */
    Tout marche niquel, tata vaut bien le dernier nom de fichier. Dès que je rajoute le le sprintf de souvrion, OU une fonction CopyFile, il m'affiche un beug au debuggage, et 3 fois sur 4 bizarement, et me dit sur cette ligne qu'il y a erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strcpy(nom_fichier_copie, ent.cFileName);
    avec le message suivant :
    passing arg1 of 'strcpy' from incompatible pointer type.

    Enfin j'aimerai juste que vous m'aidiez sur ce dernier point. J'aimerais savoir s'il existe la fonction inverse de la concatenation ou alors si on peut réinitialisé la variable chemin_source_9 à sa valeur de départ juste avant la concaténation ?? Car si c'est le cas mon programme fonctionne ! Vu que j'ai enfin le dernier nom de fichier en cours et le chemin source correct. Je les concatène et ca marche, le problème c'est la boucle, d'ou l'idée de réinitialisé ou de déconcaténer

    S'il existe un moyen, j'aimerai bien le connaitre.

    Merci encore pour tout.

  4. #44
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Ca ne marche pas, j'ai remplacé DIFFERENT_DE par != , ET par && , mais rien n'y fait il m'affiche toujours mes points.
    C'est bien la raison pour laquelle j'ai juste mis DIFFERENT_DE. Combien de fois faudra t-il te répéter qu'on compare des chaînes avec strcmp et non avec != ? Regarde dans les tutos pourquoi.

    passing arg1 of 'strcpy' from incompatible pointer type.
    nom_fichier_copie est un tableau de "tableaux de caractères", pas un tableau de caractères. nom_fichier_copie[0], nom_fichier_copie[1], etc. sont des tableaux de caractères. strcpy nécessite en premier argument l'adresse de début d'un tableau de caractères. Ce tableau doît être assez grand pour contenir la chaîne qui y sera copiée. On a déjà parlé de tout cela au moins 10 000 fois.

    Enfin j'aimerai juste que vous m'aidiez sur ce dernier point. J'aimerais savoir s'il existe la fonction inverse de la concatenation ou alors si on peut réinitialisé la variable chemin_source_9 à sa valeur de départ juste avant la concaténation ??
    Pour ça aussi on t'a déjà donné la solution. Oublie la concaténation et utilise un autre tableau pour copier tes noms de fichier. A ta place je mettrais carrément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define CHEMIN_SOURCE_9 "F:\\donnees\\goniometrie\\courts\\"
    Pour que je ne serai pas tenté de copier ou concaténer quoi que soit là-dedans.

  5. #45
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    C'est bon mon programme fonctionne, j'ai fait des comparaisons de chaînes avec strcmp au lieu de != (honte à moi) et forcemment ça marche. Merci melem.

    J'ai déclaré un tableau de cractère et non un tableau de "tableau de cractères" et le message d'erreur strcpy a disparu.

    Pour la concaténation, melem tu seras pas d'accord mais j'ai trouvé une astuce qui fonctionne mais qui sera provisoire. Au début de mon test conditonnel if , lorsqu'il y a concatenation entre le chemin_destination_9 et le nom de fichier j'ai déclaré un tableau de caractère au nombre de [54] maximum vu que le chemin ne seras jamais aussi long (quoi que d'ou le problème ) ce qui fait que le tableau se restreint au dernier nom de fichier + chemin d'accès de la concaténation et ç'est tout bon !

    La meilleure solution serait de copier à la suite de cette chaine de caractère qui est fixe et d'une longueur 34 ! j'écrirai juste le nom de fichier à partir de chemin_destination_9 [35] et ce sera tout bon !

    Ceci dit il reste encore beaucoup d'amélioration dans ce programme. Notamment la création de l'arobrescence si celle ci n'existe pas. etc etc.

    Je vous tiendrai au courant de améliorations.

    Merci melem et merci souviron

  6. #46
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Mon programme fonctionne, cependant j'aimerai l'améliorer.

    La condition pour enlever les "." et ".." du listage de dossier marche pas. j'ai tout essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if ((strcmp(ent.cFileName,".")==0) && (strcmp(ent.cFileName,"..")==0))
    {
    }
    else
    {
    /* traitement */
    }
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (!((strcmp(ent.cFileName,".")==0)) && (!(strcmp(ent.cFileName,"..")==0)))
    {
     
    /* Traitement */
     
    }
    Rien n'y fait. Ca marche quand même mais c'était histoire de trouver l'astuce.

  7. #47
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Ah !! La réflexion booléenne....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ((strcmp(ent.cFileName,".")==0) || (strcmp(ent.cFileName,"..")==0))
    {
    }
    else
    {
    /* traitement */
    }

  8. #48
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 26
    Par défaut
    Ah ! J'étais pas loin !!! Le OU je l'ai essayé, mais peut être pas avec le else ... Bref merci souviron !!

  9. #49
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Ou, comme je te l'ai montré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ((strcmp(ent.cFileName, ".") != 0) && (strcmp(ent.cFileName, "..") != 0))
    {
        /* traitement */
    }

  10. #50
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par Hayden5127 Voir le message
    Ah ! J'étais pas loin !!! Le OU je l'ai essayé, mais peut être pas avec le else ...
    Si, t'étais loin. Jusqu'à quand vas-tu coder au hasard comme ça ? Je comprends que tout le monde est sujet aux erreurs, surtout lorsqu'on débute, mais ce que j'ai remarqué chez toi c'est que tu ne fais même pas l'effort de réfléchir un peu avant d'écrire. Sans compter le fait que tu ne lis même pas parfois (parfois ? non, souvent) les réponses. Essaie donc de poser des question un peu plus raisonnables la prochaine fois.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Caractères générique pour transfert de fichiers avec PSFTP
    Par yellowdog dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 05/05/2011, 15h21
  2. API pour transfert de fichier via port série
    Par Vanatou dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 27/05/2010, 16h38
  3. [Labview 2009] Aide pour transfert de fichier (ftp)
    Par loicdu30 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 05/12/2009, 12h10
  4. renseignement pour lancéer un fichier automatiquement tous les jours en bash
    Par sinifer dans le forum Applications et environnements graphiques
    Réponses: 20
    Dernier message: 09/06/2009, 13h31
  5. Amsn incompatible avec msn messenger pour transfert de fichier
    Par tonelli dans le forum Mandriva / Mageia
    Réponses: 4
    Dernier message: 09/11/2006, 18h55

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