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 :

traitement des paramètres passés au lancement


Sujet :

C++

  1. #1
    bul
    bul est déconnecté
    Membre habitué Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 193
    Points : 133
    Points
    133
    Par défaut traitement des paramètres passés au lancement
    bonjour à toutes et à tous,

    je voudrais traiter les paramètres passés
    au lancement de mon application
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ...
    LRESULT CALLBACK WindowProcedure( HWND, UINT, WPARAM, LPARAM );
    char szClassName[ ] = "totoWindowsApp";
    int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow  )
    ...
    ils sont "dans lpszArgument" si je ne me trompe,
    et peuvent être de la forme :

    toto.txt "../ex emple/titi.txt" alors.nimporte "un autre fichier.tmp"


    j'aimerais donc traiter ( des fichiers à gérer... )
    toto.txt puis
    ../ex emple/titi.txt puis
    alors.nimporte puis
    un autre fichier.tmp
    je peux ( ? ) étudier lpszArgument caractères par caractères,
    mais je pense qu'il y a plus simple !
    vous feriez comment vous ?
    si vous aviez un exemple, ce serait bienvenu
    ça existe probablement, ce serait bête de
    réinventer l'eau chaude, mais pas trouvé
    dans mes recherches probablement mal formulées....

    merci d'avance

  2. #2
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par bul Voir le message
    ils sont "dans lpszArgument" si je ne me trompe
    Tu ne te trompes pas . Mais pas besoin de faire caractère par caractère.
    Tu peux, par exemple, construire un std::string basé sur la chaîne de caractères. Tu auras alors ensuite toutes les possibilité de recherche de texte/caractère, ou d' extraction qu'offrent ce conteneur de la STL.
    "L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]

  3. #3
    bul
    bul est déconnecté
    Membre habitué Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 193
    Points : 133
    Points
    133
    Par défaut
    Tu peux...construire un std::string

    merci
    spoutspout.
    déjà, tu as raison
    "ça ne change pas grand chose", malgré tout, au fond !
    faut se faire son petit algo, manuellement, quoi...
    j'espérais quelque chose de "plus élégant",
    de "moins bricolo" dans son petit coin...
    j'en demande probablement trop !
    Cordialement.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    boost::program_option ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    bul
    bul est déconnecté
    Membre habitué Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 193
    Points : 133
    Points
    133
    Par défaut
    boost::program_option
    merci JolyLoic,
    effectivement, on en parle sur ce site,
    un "peu compliqué" il semble ( pour mon besoin ),
    des bugs peut-être ?
    bref.... jamais content ceux qui posent des questions !

    Cordialement.

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Commence par utiliser un main standard au lieu de cette horreur
    Boost ftw

  7. #7
    bul
    bul est déconnecté
    Membre habitué Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 193
    Points : 133
    Points
    133
    Par défaut
    Commence par utiliser un main standard au lieu de cette horreur
    c'est à moi que tu causes ?

    si oui : tu crois que ça résolverait mon problème ?
    et c'est quoi, pour toi, un "main standard" ?
    ce que j'utilise on trouve ça dans toutes les docs,
    dans tous les exemples... partout !
    c'est même ce que donne le modèle proposé par Code::Blocks !?!
    c'est pas bien ? en quoi est-ce une horreur ?
    qu'est-ce qui gène ?
    je ne cherche qu'à apprendre moi !

    si tu me donnes une solution avec un "main standard" : j'adopte.
    @+

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Ca dépend... si tu veux que ton programme soit capable d'utiliser les fonctions du shell windows, alors oui, il va falloir passer par cette "horreur"

    En fait cette horeur, est le point d'entrée natif d'un executable Windows... (comme en ont tous les OS du monde)
    Si il n'est pas défini, le compilateur va utiliser une fonction "générique" qui ... en gros... va appeler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int main(int argc, const char** argv)
    Ou tu auras tous les arguments bien séparés.

    Et si celui ci n'est pas défini, il va appeler:
    Si maintenant, tu veux rester windows (par exemple pouvoir utiliser le handle sur l'instance précédente de ton programme), il y a une fonction du SDK windows qui fait la séparation des arguments.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    bul
    bul est déconnecté
    Membre habitué Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 193
    Points : 133
    Points
    133
    Par défaut
    si tu veux que ton programme soit capable d'utiliser les fonctions du shell windows, alors oui,
    euh... c'est un pgr qui va tourner ( dans un 1er temps )
    sous windows ( on verra au 2ème temps de la valse )

    il va falloir passer par cette "horreur"
    ah ben alors, peu de choix
    aurais-je affaire à un anti-windowsien primaire ? ;o)

    int main(int argc, const char ** argv) tu auras tous les arguments bien séparés.
    je croyais que c'était réservé à des programmes "console"

    il y a une fonction du SDK windows qui fait la séparation des arguments.
    ah... c'est bien ce que je pensais ( et espérais au fond )
    je me cite : mais je pense qu'il y a plus simple !
    vous feriez comment vous ?
    malgré tes réticences envers windows ;o) tu pourrais
    m'en dire un ch'tiot poil de plus ?

    lire ( et parfois comprendre s'il y a un exemple ) une doc en
    américain j'y parviens (péniblement) , mais faire une recherche,
    j'en suis bien incapable.

    merci de vos interventions.



    EDIT : j'ai eu des pistes ( par ailleurs )
    et finalement : CommandLineToArgvW()
    devrait me convenir parfaitement.

  10. #10
    bul
    bul est déconnecté
    Membre habitué Avatar de bul
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 193
    Points : 133
    Points
    133
    Par défaut
    et finalement....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        for ( INT nf=1; nf<__argc; nf++ )
        {    traitement de  __argv[nf]     }
    ça ne fonctionne pas si mal....

    @+

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/08/2011, 09h36
  2. Réponses: 3
    Dernier message: 21/08/2008, 23h13
  3. [MySQL] Suppression de données à partir des paramètres passés en lien
    Par cyril3d dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 01/04/2008, 14h52
  4. Réponses: 1
    Dernier message: 29/03/2006, 11h05
  5. [TADOStoredProc] initialisation des paramètres et lancement
    Par zelastwarrior dans le forum C++Builder
    Réponses: 5
    Dernier message: 16/06/2005, 08h43

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