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 :

faite une pause temporairement


Sujet :

C++

  1. #1
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut faite une pause temporairement
    lu,

    voila, j'ai besoin de faire une temporisation choisi (nombre x de second)
    dans un batch (MS-XP) mais wait n'existe plus sous cet OS

    moi pas peur , je cherche (longtemp) et je trouve que ca en 'C'...
    et que je n'arive pas a comprendre

    m'ettant lancer (avec difficulter) dans l'apprentissage du ++, je poste ici
    pour une aide a traduire ce que DEVRAIT faire ce code (s'il etait correct) en ++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
     
    main(int, char*sec[])
    {
    	sleep(sec[1]);
    }
    on ne rigole pas au fond, je vous ai vue
    ca ne compile pas; les pro que vous etes vont me dire normal
    mais c tout ce que j'ai trouver
    cet fonction est peu ou mal documente

    sur tout ce que j'ai lu 'sleep' est declarer dans <windows.h>
    de deboger me dit lui qu'il ne trouve pas la fonction sleep

    pour l'instant j'ai bidouiller ca pour faire la farce:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @echo off
    if 0%1==0 (
    	set /p dureT=entrer un temp en second
    	)else set dureT=%1
    set heurD=%time:~6,2%
    set /A heurF= %heurD% + %dureT%
    if %heurF% GTR 59 set /A heurF=%heurF%-59
    :DCOMPT
    set heurC=%time:~6,2%
    if not %heurC%==%heurF% goto DCOMPT
    mais c'est pas tres serieux

    je cheche donc a faire un exe que l'on appel (en ligne de commande sous winXP) de la facon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    c:\>wait xx 
    :: wait = nom du process  et xx = nombre de second
    a vot' bon coeur m'sieu / dame...une piste ou un debut de solution (mais en ++) siouplait...

  2. #2
    Membre expérimenté Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Par défaut
    Sleep a une majuscule!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
     
    int main(int, char* sec[])
    {
    	Sleep(sec[1]);
    	return EXIT_SUCCESS;
    }

  3. #3
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    Citation Envoyé par Twindruff
    Sleep a une majuscule!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
     
    int main(int, char* sec[])
    {
    	Sleep(sec[1]);
    	return EXIT_SUCCESS;
    }
    pfrouuuu!
    la quiche mais j'avait prevenu

    merci bien...je testerai ca.....apres Lyon/Marseille ..OM..the best...

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    sec[1] est une chaîne de catactères, il faudra aussi la convertir en entier (voir FAQ C++).

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    sleep() est une fonction POSIX (déclarée dans <unistd.h> dans les systèmes unixoïdes), qui prend un paramètre en secondes.
    Sleep() est une fonction Win32 (déclarée en incluant <windows.h>) qui prend un paramètre en millisecondes.

    Pour obtenir ce paramètre, il te faudra convertir le paramètre à l'index 1 (s'il existe : Vérifier l'argument de type int avant d'essayer). Pour cela, en C++ on utilise un std::istringstream.

    Au fait: En C++, on n'utilise généralement pas les headers C standard comme <stdio.h>. Si on a vraiment besoin des fonctions de stdio, il est conseillé d'inclure plutôt le header C++ standard <cstdio>...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    ...Haaa! 2-1 pour marseille, bref, je reprend:

    Merci bien "medinoc" et "Twindruff",

    la sauce a l'air de prendre...Juste une erreur de conversion a la compilation, comme la souligner "Laurent Gomila", je regarderai dans la FAQ demain, il me semble avoir deja lu ca.

  7. #7
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    Mince,
    Le site (developpez.COM) repond de nouveau MAIS la FAQ est vide...

    2 jours d'arret et pas meme un mot d'explication ?

    plus qu'a attendre que tout rentre dans l'ordre bon courage messieur les administrateur...

    edit
    ---

    ca remarche
    ca venai peut etre de mon systeme
    ...

  8. #8
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    Bon, j'en suis la...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include <windows.h>
     
    int main(int, char* sec[])
    {
    	Sleep(sec[1]);
    	return EXIT_SUCCESS;
    }
    evidement, le retour du compilateur:
    -error: invalid conversion from `char*' to `DWORD'
    -error: initializing argument 1 of `void Sleep(DWORD)'
    :: === Génération finie: 2 erreurs, 0 avertissements ===
    Je cherche donc a faire la convertion.
    Mais deja 'DWORD' c'est a dire ??? je croyai que Sleep attendai un INT,
    mes recherche ne donne pas grand chose d'exploitable avec mon niveau noob

    -c'est souvent des bout/extrait de code suivi d'un "tu voit, c'est tout simple"
    -Ces probleme on l'air simple a leur yeux, bien qu'il ai conscience de la dificulter
    -preuve en est, le tout est tres souvent suivi d'un = ALLER, BONNE CHANCE

    Mon temp viendra, en attendant je vai encore pleurer un peut votre aide.

    la fonction qui revien sans cesse est 'ATOI', je vai donc creuser mais les exemple trouver ne me parle pas trop (en fait, pas du tout):
    | ATOI | conversion caractère vers Int | Convert string to int | if (atoi(exemple) < ..) { } ... } |
    conversion
    -no comment-

    HA! je pensse avoir mi le doit sur ce que je cherchai ICI

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    HA! je pensse avoir mi le doit sur ce que je cherchai ICI
    Presque... Ca c'est pour le faire en C ; cherche la même dans la FAQ C++

  10. #10
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <windows.h>
     
    int main(int, char* sec[])
    {
        int seconde=strtol(sec[1], NULL, 10);
    	Sleep(seconde);
    	return EXIT_SUCCESS;
    }
    Bien, ca marche...
    Mais (il en faut toujour 1):
    si je l'execute sans argument:

    Owait.exe a rencontrer un probleme et doit fermer, nous vous prion...blabla...blabla...

    message tres (trop???) connu sous win,
    Donc je passe a la gestion des erreur.

    pour faire simple: je souhaiterai tester si sec[] a recu l'argument et si non, affecter une valeur par default (5000 parsque c'est ce qui m'arrange pour le moment).

    et vu que cela sutisera en console, renvoyer des niveaux ERROR_LEVEL X (X>=1) en cas de bleme. Par ex:
    -200 erreur d'origine inconue (ou plutot non traiter)
    -50 si argument manquant (et donc utilisation de la valeur par default)
    -30 si argument non valide (et re-utilisation de la valeur par default)
    et ERROR_LEVEL a '0' au lieu de EXIT_SUCCESS si tout va bien

    pour manger enormement de cmd win, je sait que c'est un retour aussi pratique que mal reseigner, mais ca permet de gerer correctement les erreur pour qu'un script fonctionne de maniere coherante, meme en cas de defaillance d'une commande (pouvue que l'on ai pris soin de prevoir les eventuel erreur)

    je cherche, mais n'esiter surtout pas a me mettre sur la voie...

    edit
    ---
    'laurent gomila'
    j'ai vu, j'avai commencer a chercher dans la FAQ C++, mais j'en suis revenue bredouille (ou broukouille comme on dit dans le bouchonoi )

    mais si tu men parle, c'est que ca doit ce trouver ...bon j'y retourne []<=

    edit
    ---
    faut'il faire:
    Convertir un char* en un string ?
    puis le reconvertir en int (la je n'ai pas trouver....pas encore)
    ca me parrai tordu!

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    Citation Envoyé par Médinoc
    Pour obtenir ce paramètre, il te faudra convertir le paramètre à l'index 1 (s'il existe : Vérifier l'argument de type int avant d'essayer). Pour cela, en C++ on utilise un std::istringstream.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    Citation Envoyé par Médinoc
    Médinoc a écrit :
    Pour obtenir ce paramètre, il te faudra convertir le paramètre à l'index 1 (s'il existe : Vérifier l'argument de type int avant d'essayer). Pour cela, en C++ on utilise un std::istringstream.
    Surement mais tu parle quel langue..dsl mon niveau est encore plus bas que tu le pensse

    Je suis tomber sur une conversation qui m'inquiete (Lea Linux):
    convertir des char en int en c++
    Auteur: super-ienien (IP enregistrée)
    Date: le 14 décembre 2003 à 19:48

    Salut voila je n'arrive pas a trouver comment on convertit une chaine de caracteres en nombre entier ou inversement.
    Je ne sait meme pas si c'est possible.

    --------------
    REPONSE
    --------------
    Bonsoir,

    Bien sûr que c'est possible.
    Et ce n'est pas C++, c'est du C !
    ca aide pas hein ?
    bon trouve pas, donc je vai me retapper une partit du parpin de 'Bjarne S'
    ou je devrai trouver mon bonheur.

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    faut'il faire:
    Convertir un char* en un string ?
    puis le reconvertir en int (la je n'ai pas trouver....pas encore)
    ca me parrai tordu!
    Non, tu peux convertir un char* directement en autre chose avec la méthode donnée par la FAQ.

    Et puis il ne faut pas voir les conversions char* <--> string comme quelque chose d'énorme, string c'est juste la classe de chaînes de caractères en C++ et tout ça se fait naturellement

  14. #14
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    tu me rassure,
    car dans les exemple C'EST des bloc enorme...
    bref a suivre...

    edit
    ---
    je suis passer devant ++ de fois sans lier 'en entier' et 'int'
    j'suis fatiger je croi , certaine info se perde entre les yeux et le cerveau

    et ho fait Sleep utilisant <windows.h> ... c'est du C aussi !!!
    pour du ++ pur et dure on utilise quoi ?

  15. #15
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    bon,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <sstream>
     
    int main()
    {    
        // créer un flux à partir de la chaîne à convertir
        std::istringstream iss( "10" );
        // convertir en un int
        int nombre;
        iss >> nombre; // nombre vaut 10
    }
    vous m'arreter quand je derape...
    iss = nom du flux creer (au choix)
    nombre = seconde dans mon exemple de code (voir poste ulterieur)
    puis-je placer directement mon 'sec[1]' dans le flux => iss(sec[1]) (je pensse que oui, mais je prefere demander)


    j'ai modifier comme suis, ca compile sans erreur mais j'ai pas tester en console
    (j'ai pas encore miam, j'essairai apres...ca fait depuis hier que je dit: encore un ptit peu, encore 5 mn, juste le temp de tester ca... )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <sstream>
    #include <windows.h>
    int main(int, char* sec[])
    {
        int seconde;
        std::istringstream iss( sec[1] );
        iss >> seconde;
    	Sleep(seconde);
    	return EXIT_SUCCESS;
    }
    Bon, tester ca marche, faut juste pas oublier que c'est en millisec.
    OUI ca sens le vecu, et on ne rigole pas au fond...je vous surveille

  16. #16
    Membre expérimenté Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Par défaut
    Citation Envoyé par S2S
    [CODE]
    si je l'execute sans argument:

    Owait.exe a rencontrer un probleme et doit fermer, nous vous prion...blabla...blabla...
    Tu peux lire ça pour comprendre comment ça marche les arguments passés à un programme.
    PS: <stdio.h> et printf c'est du C

  17. #17
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int, char* sec[])
    comme ca par exemple

    c'est compri, deja eu et lu des lien (sinon je n'aurai pas deviner tout seul)

    Mais vu que tu releve le truk, ton lien m'aporte une question (pas besoin ici aparament, mais ca pourai me servir + tot que je le pense)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int n, char *params[])
    moi je n'ai pas le 'n' dans main(int n,...), bien que je n'utilise pas cet valeur ici, est-ce plus propre d'initialiser quand meme une variable ? ou est-ce que l'on sens moque completement dans ce contexte...

    edit
    ---
    je suis deja content, c'est operationnel et sufisant pour ma bidouille en bach.
    (le but 1er etant de me faire une commande "wait", cet derniere n'existant plus sous XP.)

    Mais je ne vait pas m'arreter la, j'ai pour abitude de ne m'arreter que sur quelque chose de propre, cela ne clos donc pas ce topic...
    donc deja un grand merci a tous

  18. #18
    Membre expérimenté Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Par défaut
    Mais justement c'est n qui te donne le nombre d'arguments (le nom du programme est considéré comme le premier argument).

  19. #19
    S2S
    S2S est déconnecté
    Membre chevronné Avatar de S2S
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 336
    Par défaut
    donc je doit le mettre obligatoirement, meme si ca na pas l'air de gener le fonctionnement ?

  20. #20
    Membre expérimenté Avatar de Twindruff
    Inscrit en
    Janvier 2005
    Messages
    216
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 216
    Par défaut
    Ben non ce n'est pas obligatoire mais puisque tu en as besoin pour déterminer le nombre d'arguments ...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/03/2008, 21h16
  2. Creation d'une fonction temporaire avec droit datareader
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/10/2004, 14h26
  3. C++Builder fait une erreur de calcul
    Par gandf dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/01/2004, 22h27
  4. Marquer une pause dans une procédure stockée
    Par PéPénet dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/11/2003, 10h42
  5. Programmer une pause brève
    Par NeoMan dans le forum Assembleur
    Réponses: 14
    Dernier message: 28/04/2003, 01h59

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