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

AppleScript Discussion :

Besoin d'aide codage [AppleScript]


Sujet :

AppleScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 3
    Par défaut Besoin d'aide codage
    Bonjour tous le monde,

    Alors voila je vois pas du tous ou ca cloche on a bien la variable nbrvideo qui est égale au choix mais pour le "if" ca passe pas du tous je comprend vraiment pas ca sort toujours négativement si quelqu'un pourrais m'aider ca serait super merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    set temp to choose from list {"1", "2", "3"} with title "Choose on this list" with prompt "How much youtube video boosted ?" OK button name "Select" cancel button name "Annulez" default items {"1"} with multiple selections allowed
    set nbrvideo to temp
    if nbrvideo = "1" then
    	display dialog "on trouve 1"
    	-- insert if actions here
    end if
    if nbrvideo ≠ "2" then
    	display dialog "on trouve 2"
    end if
    if nbrvideo ≠ 3 then
    	display dialog "on trouve 3"
    end if

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour Samlastar,
    Suite à l'instruction Choose from List, la variable Temp peut avoir plusieurs valeurs et ton script ne les teste pas toutes.
    Comme ce sujet fait souvent l'objet de questions, je vais essayer de donner une explication détaillée qui pourra servir au plus grand nombre. (j'espère !)


    Commençons par la valeur la plus simple : Si l'utilisateur clique sur le bouton "annuler" : dans ce cas, Temp vaut "False".
    C'est une curiosité historique de cette instruction "choose from list". (les autres dialogues donnent soit une erreur, soit le nom du bouton cliqué).

    Il faut donc encadrer le traitement des réponses par un test "is not false then", qui permet de limiter la suite du programme à ce qui est valide.


    La seconde erreur de ton script est due au type retourné par le choose from list : la variable est une liste.
    Applescript entretient la confusion en te laissant croire, lorsque cette liste n'a qu'un seul élément, que c'est une valeur...
    Si l'utilisateur sélectionne la valeur "1", la variable est {"1"}, soit une liste avec un seul élément "1". Tu peux tester directement si la valeur est "1", le compilateur est tolérant.
    Par contre, si l'utilisateur sélectionne plus d'une valeur (tu as mis "multiple selections allowed" !), alors là le compilateur ne peut pas te laisser faire, car le résultat est {"1","3"} soit une liste avec ici 2 éléments, le "1" et le "3" ont été choisis par l'utilisateur.

    il faudrait donc voir le nombre d'items sélectionnés, et traiter chacun d'eux. (si tu ne veux q'un seul item possible, il suffit de retirer le multiple selection allowed).
    Pour traiter chaque cas, on va donc utiliser une boucle repeat qui va parcourir tous les choix possibles.

    Enfin, la dernière particularité est que chaque item sélectionné est de type text et pas de type string.
    Or, tes if successifs comparent avec les string "1", "2", "3".

    Là je n'ai jamais eu d'explication logique pour laquelle ta liste initialisée avec les choix possible est du text et pas du string !!

    Ce n'est pas grave et pour s'en convaincre, il suffit de faire des display dialog class of xxx pour voir le type de ta variable.
    Dans notre cas, on va donc forcer chaque item de la sélection en string et le tour est joué !!

    Voici ton exemple complet corrigé pour supporter tous les cas :
    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
    set temp to choose from list {"1", "2", "3"} with title "Choose on this list" with prompt "How much youtube video boosted ?" OK button name "Select" cancel button name "Annulez" default items {"1"} with multiple selections allowed
    
    if temp is not false then -- ne fait rien si l'utilisateur clique sur Annuler
        
        repeat with Mon_item in temp-- boucle sur chaque valeur sélectionnée
            set nbrvideo to Mon_item as string-- force le text en string
            if nbrvideo = "1" then
                display dialog "on trouve 1"
    -- insert if actions here
            end if
            if nbrvideo = "2" then
                display dialog "on trouve 2"
            end if
            if nbrvideo = "3" then
                display dialog "on trouve 3"
            end if
        end repeat -- boucle sur la sélection suivante
        
    end if
    Ce code est plus "solide" car il couvre tous les cas d'utilisation. J'espère avoir été clair.
    Cordialement ... et joyeux Noël à tous !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 3
    Par défaut
    Citation Envoyé par PBELL Voir le message
    Bonjour Samlastar,
    Suite à l'instruction Choose from List, la variable Temp peut avoir plusieurs valeurs et ton script ne les teste pas toutes.
    Comme ce sujet fait souvent l'objet de questions, je vais essayer de donner une explication détaillée qui pourra servir au plus grand nombre. (j'espère !)


    Commençons par la valeur la plus simple : Si l'utilisateur clique sur le bouton "annuler" : dans ce cas, Temp vaut "False".
    C'est une curiosité historique de cette instruction "choose from list". (les autres dialogues donnent soit une erreur, soit le nom du bouton cliqué).

    Il faut donc encadrer le traitement des réponses par un test "is not false then", qui permet de limiter la suite du programme à ce qui est valide.


    La seconde erreur de ton script est due au type retourné par le choose from list : la variable est une liste.
    Applescript entretient la confusion en te laissant croire, lorsque cette liste n'a qu'un seul élément, que c'est une valeur...
    Si l'utilisateur sélectionne la valeur "1", la variable est {"1"}, soit une liste avec un seul élément "1". Tu peux tester directement si la valeur est "1", le compilateur est tolérant.
    Par contre, si l'utilisateur sélectionne plus d'une valeur (tu as mis "multiple selections allowed" !), alors là le compilateur ne peut pas te laisser faire, car le résultat est {"1","3"} soit une liste avec ici 2 éléments, le "1" et le "3" ont été choisis par l'utilisateur.

    il faudrait donc voir le nombre d'items sélectionnés, et traiter chacun d'eux. (si tu ne veux q'un seul item possible, il suffit de retirer le multiple selection allowed).
    Pour traiter chaque cas, on va donc utiliser une boucle repeat qui va parcourir tous les choix possibles.

    Enfin, la dernière particularité est que chaque item sélectionné est de type text et pas de type string.
    Or, tes if successifs comparent avec les string "1", "2", "3".

    Là je n'ai jamais eu d'explication logique pour laquelle ta liste initialisée avec les choix possible est du text et pas du string !!

    Ce n'est pas grave et pour s'en convaincre, il suffit de faire des display dialog class of xxx pour voir le type de ta variable.
    Dans notre cas, on va donc forcer chaque item de la sélection en string et le tour est joué !!

    Voici ton exemple complet corrigé pour supporter tous les cas :
    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
    set temp to choose from list {"1", "2", "3"} with title "Choose on this list" with prompt "How much youtube video boosted ?" OK button name "Select" cancel button name "Annulez" default items {"1"} with multiple selections allowed
    
    if temp is not false then -- ne fait rien si l'utilisateur clique sur Annuler
        
        repeat with Mon_item in temp-- boucle sur chaque valeur sélectionnée
            set nbrvideo to Mon_item as string-- force le text en string
            if nbrvideo = "1" then
                display dialog "on trouve 1"
    -- insert if actions here
            end if
            if nbrvideo = "2" then
                display dialog "on trouve 2"
            end if
            if nbrvideo = "3" then
                display dialog "on trouve 3"
            end if
        end repeat -- boucle sur la sélection suivante
        
    end if
    Ce code est plus "solide" car il couvre tous les cas d'utilisation. J'espère avoir été clair.
    Cordialement ... et joyeux Noël à tous !

    Merci beaucoup pour ta réponse très claire je suis vraiment ravis !

    Encore merci !

    Cordialement samlastar

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

Discussions similaires

  1. [AppleScript] Besoin d'aide codage
    Par syma91 dans le forum AppleScript
    Réponses: 3
    Dernier message: 09/01/2015, 19h08
  2. besoin d'aide dans le codage canal
    Par core_i3 dans le forum MATLAB
    Réponses: 0
    Dernier message: 24/03/2011, 17h30
  3. besoin d'aide pour codage en java
    Par pat_gem dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 06/05/2008, 20h30
  4. [langage] Besoin d'aide dans mon codage
    Par frees3x dans le forum Langage
    Réponses: 4
    Dernier message: 08/11/2006, 08h21
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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