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

Autres éditeurs Discussion :

Xcode et argv


Sujet :

Autres éditeurs

  1. #1
    Membre habitué Avatar de mailbox
    Profil pro
    Inscrit en
    Février 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 140
    Points : 159
    Points
    159
    Par défaut Xcode et argv
    Yop,

    Quand je veux coder sous windows avec Code::Blocks je rentre mes arguments dans un des menu et tout ce passe bien.

    Quand je veux coder sous mac avec Xcode, je rentre mes arguments ici :
    http://www.hostingpics.net/viewer.ph...a_22.06.25.png

    Et visiblement il ne comprend pas car en voulant les afficher j'ai :
    (null) TERM_PROGRAM=Apple_Terminal TERM=xterm-color SHELL=/bin/bash

    ...qui ne sont pas du tout les arguments que j'ai entré. Quelqu'un a une idée de ce que jai pu faire de travers?

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Citation Envoyé par mailbox Voir le message
    Yop,

    Quand je veux coder sous windows avec Code::Blocks je rentre mes arguments dans un des menu et tout ce passe bien.

    Quand je veux coder sous mac avec Xcode, je rentre mes arguments ici :
    http://www.hostingpics.net/viewer.ph...a_22.06.25.png

    Et visiblement il ne comprend pas car en voulant les afficher j'ai :
    (null) TERM_PROGRAM=Apple_Terminal TERM=xterm-color SHELL=/bin/bash

    ...qui ne sont pas du tout les arguments que j'ai entré. Quelqu'un a une idée de ce que jai pu faire de travers?
    ce ne sont pas les arguments que vous imprimez, mais les variables d'environnement…

  3. #3
    Membre habitué Avatar de mailbox
    Profil pro
    Inscrit en
    Février 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 140
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    ce ne sont pas les arguments que vous imprimez, mais les variables d'environnement…
    J'ai lu "Arguments to be passed on launch" donc j'ai cru que...

    Savez-vous dans quel menu je dois les entrer?

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Citation Envoyé par mailbox Voir le message
    J'ai lu "Arguments to be passed on launch" donc j'ai cru que...

    Savez-vous dans quel menu je dois les entrer?
    Vous n'avez pas compris :

    vous avez bien entré les arguments là où il faut mais ce que vous imprimez :
    "TERM_PROGRAM=Apple_Terminal TERM=xterm-color SHELL=/bin/bash"
    ne sont pas les arguments mais les variables d'environnement !
    Donc c'est dans votre code qu'il y a un problème, pas dans la définition des arguments.
    Montrez plutôt ce que vous faites pour imprimer ces "arguments" …

  5. #5
    Membre habitué Avatar de mailbox
    Profil pro
    Inscrit en
    Février 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 140
    Points : 159
    Points
    159
    Par défaut
    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%s %s %s %s %s\n", argv[0], argv[1], argv[2], argv[3], argv[4]);
    en fait mon but est d'ouvrir un fichier qui serait inscrit dans les arguments, donc par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FILE *fichier=fopen(argv[3],"r");
    Mais ca fonctionne pourtant correctement avec Code::Blocks sous windows, et sur OpenVMS

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Citation Envoyé par mailbox Voir le message
    Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%s %s %s %s %s\n", argv[0], argv[1], argv[2], argv[3], argv[4]);
    en fait mon but est d'ouvrir un fichier qui serait inscrit dans les arguments, donc par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FILE *fichier=fopen(argv[3],"r");
    Mais ca fonctionne pourtant correctement avec Code::Blocks sous windows, et sur OpenVMS
    et çà fonctionne très bien aussi sous Xcode en entrant les arguments comme vous l'avez fait…

    faites un simple projet C avec un main() qui imprime les arguments vous verrez bien, et à partir de là essayer de comprendre ce que vous avez de différent dans votre projet mais les arguments que vous imprimez sont des arguments habituellement passés dans des scripts pour setenv, pour définir les variables d'environnement.

  7. #7
    Membre habitué Avatar de mailbox
    Profil pro
    Inscrit en
    Février 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 140
    Points : 159
    Points
    159
    Par défaut
    Citation Envoyé par JeitEmgie Voir le message
    et çà fonctionne très bien aussi sous Xcode en entrant les arguments comme vous l'avez fait…

    faites un simple projet C avec un main() qui imprime les arguments vous verrez bien, et à partir de là essayer de comprendre ce que vous avez de différent dans votre projet mais les arguments que vous imprimez sont des arguments habituellement passés dans des scripts pour setenv, pour définir les variables d'environnement.
    Je lui ai fait afficher argc et les argv, voilà le résultat :

    1
    /Users/Aurelien/Desktop/TP1/build/Release/TP1 (null) TERM_PROGRAM=Apple_Terminal TERM=xterm-color SHELL=/bin/bash

    Je passe plus de temps à essayer de faire marcher Xcode qu'à avancer dans mon programme...Autant j'adorais mon mac, autant là avec un portable windows et un bon vieux code::block je n'aurai pas ces soucis -.-

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Citation Envoyé par mailbox Voir le message
    Je lui ai fait afficher argc et les argv, voilà le résultat :

    1
    /Users/Aurelien/Desktop/TP1/build/Release/TP1 (null) TERM_PROGRAM=Apple_Terminal TERM=xterm-color SHELL=/bin/bash

    Je passe plus de temps à essayer de faire marcher Xcode qu'à avancer dans mon programme...Autant j'adorais mon mac, autant là avec un portable windows et un bon vieux code::block je n'aurai pas ces soucis -.-
    d'abord argc vaut 1 et pas 5 comme il devrait, donc les arguments n'ont pas été associés à l'exécutable que vous testez !
    ensuite en passant outre argc pour imprimer les argv vous imprimez effectivement le contenu de la zone mémoire qui contient les variables d'environnement !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int main(int argc, const char *argv[])
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
     
    	int i ;
     
    	for(i=0;i<argc;i++)
    		printf("%d %s\n",i, argv[i]) ;
    …
    et la sortie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    run
    [Switching to process 49149]
    0 /Users/…/Contents/MacOS/TestObjCRuntime
    1 ks
    2 cs
    3 documents/alpha.txt
    4 beta.txt
    avec les arguments tels que vous les avez définis.

  9. #9
    Membre habitué Avatar de mailbox
    Profil pro
    Inscrit en
    Février 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 140
    Points : 159
    Points
    159
    Par défaut
    hmm il ne reconnait pas :

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    Enfin j'ai essayé sans, et rien de changé >.< Mais bon xcode me sort vraiment par les yeux, donc j'ai installé code::blocks.

    Je réessayerai surement xcode dans quelques jours mais j'ai déjà perdu trop de temps à vouloir m'en servir pour le moment ;o

    En tout cas merci de ton aide!

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 957
    Points : 4 386
    Points
    4 386
    Par défaut
    Citation Envoyé par mailbox Voir le message
    hmm il ne reconnait pas :

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    çà ce n'est que si votre main est en Objective-C (main.m) si votre main est en C ou C++, vous n'avez pas besoin de cette ligne.

    Lisez ce que j'ai dit plus haut :

    si argc vaut 1 c'est que les arguments que vous avez créés ne sont pas assignés à l'exécutable que vous testez.

    C'est impossible de deviner à distance ce que vous faites exactement mais il est évident que "Run" ne lance pas l'exécutable auquel vous avez assigné les arguments.

    (… est-ce que l'exécutable est lancé par un script intermédiaire qui lui est la cible du "Run"…)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb avec argv : argv[1] vide
    Par oz80 dans le forum C++
    Réponses: 3
    Dernier message: 16/11/2005, 12h49
  2. argument programme --> **argv
    Par kij dans le forum C
    Réponses: 6
    Dernier message: 18/04/2005, 15h41
  3. contenu de argv[0]
    Par duj dans le forum C
    Réponses: 4
    Dernier message: 19/12/2003, 13h34
  4. [langage] probleme @ARGV
    Par la bille dans le forum Langage
    Réponses: 7
    Dernier message: 28/11/2003, 15h45
  5. [langage] script ARGV[0] ?
    Par kacedda dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2003, 12h10

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