[R] Réception de paramètres

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

[R] Réception de paramètres

#1

Message par ricky »

Hello,

quelle est la fonction pour détecter si on envoie ou pas des paramètres au exe?

Merci d'avance pour votre aide.
Modifié en dernier par ricky le mer. 11 févr. 2009 14:55, modifié 2 fois.
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [...] réception de paramètres

#2

Message par Yogui »

Code : Tout sélectionner

If $CMDLine[0] > 0 Then ; vérification si paramètre
    $Services = $cmdline[1] ;lecture du 1er paramètre
    $Computer = $cmdline[2] ;lecture du second
Else
    msgbox(0,"erreur","paramètre obligatoire")
EndIf
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [...] Réception de paramètres

#3

Message par ricky »

Merci pour ta réponse Yogui, mais existe-t-il un moyen qu'il reconnaisse par exemple /c=c:\Temp au lieu de prendre les paramètres dans l'ordre?
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [...] Réception de paramètres

#4

Message par Yogui »

je pense avoir besoin de plus de précision :s
/c=c:\Temp
:?:
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [...] Réception de paramètres

#5

Message par ricky »

Dans l'exemple que tu me donnes, le programme prend les paramètres dans l'ordre.

Par exemple, pour un programme, dans une fonction j'ai besoin de 4 paramètres exemple : test.exe 1 2 3 4
Et dans une autre fonction il me faut que 2 paramètres, exemple : test.exe 1 4

Dans certains programmes tu peux lui envoyer par exemple : test.exe /a=salut /c=c:\temp /t=3 /s=1
Et là, j'aimerais qu'il me lise ce qu'il y a par exemple après le /a et le /s.
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [...] Réception de paramètres

#6

Message par Yogui »

Je me suis embarqué dans un truc :s

enfin je met mon code ici je suis 100 % certain qu'il doit y avoir plus simple :roll:

Code : Tout sélectionner

Dim $param, $saisie, $premier, $second, $trois, $quatre
$nombreparam = $cmdline[0]
MsgBox(0, '', $nombreparam) ;récupération du nombre de parametre

For $i = 1 To $nombreparam Step 1
    If $cmdline[$i] <> "" Then
        $param = $param & "|" & $cmdline[$i] ;je met les parametre dans une variable séparer par des | "a=param1|c=param3"
    EndIf
Next
$paramR = StringSplit($param, "|") ;je découpe ma variable de stockage pour tout récupérer dans un tableau
For $i = 2 To $paramR[0] Step 1
    $paramS = StringSplit($paramR[$i], "=") ;je découpe chaque ligne du tableau par le "="
    Select
        Case $paramS[1] = "a"
            $premier = $paramS[2]
        Case $paramS[1] = "b"
            $second = $paramS[2]
        Case $paramS[1] = "c"
            $trois = $paramS[2]
        Case $paramS[1] = "d"
            $quatre = $paramS[2]
        Case Else
            MsgBox(0, "erreur", "ben quoi ?")
    EndSelect
    
Next

MsgBox(0, "", "param1 = " & $premier & @CRLF & "param2 = " & $second & @CRLF & "param3 = " & $trois & @CRLF & "param4 = " & $quatre) ;j'affiche le résultat :)

 

l'appel se fait avec de 1 à 4 paramètres

exemple

c:\toto.exe a=premier d=dernier

mais je pense que les pros peuvent faire mieu :mrgreen:


Edit pour prendre en compte les modifications de tolf (mais celui de Tlem est plus propre)
Modifié en dernier par Yogui le mar. 10 févr. 2009 22:32, modifié 3 fois.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [...] Réception de paramètres

#7

Message par ricky »

Ah ok, merci, ça devient vite compliqué. J'espère qu'il existe moins compliqué quand même.

Merci beaucoup pour ton aide
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Réception de paramètres

#8

Message par tolf »

@Yogui : Pensez à utiliser l'outil "Tidy" de Scite (raccourci CTRL+T) pour rendre votre code plus lisible :wink: (les ElseIf en escalier ça fait mal aux yeux :| )
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] Réception de paramètres

#9

Message par Yogui »

Merci pour le tidy je ne connaissait pas :oops:

et pour le elseif en escalier en fait j'ai fini vite sans prendre le temps de faire un case :oops:


edit : correction avec du code en suivant les recommandations
Modifié en dernier par Yogui le mer. 11 févr. 2009 08:25, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Réception de paramètres

#10

Message par Tlem »

Voici une autre solution :
► Afficher le textecode
Ce n'est pas forcément plus simple, mais épuré de toutes les fioritures, le code tient sur 12 lignes. 8)
Par contre il crée automatiquement les variables en fonction du paramètre rentré.

Cela dit, il faut quand même déclarer les variables à utiliser sous peine d'erreurs lors de la compilation. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] Réception de paramètres

#11

Message par Yogui »

Le même avec une étape en moins qui ne sert à rien il devient donc plus simple

l'appel se fait toujours

Code : Tout sélectionner

test.exe /a=salut /c=c:\temp /t=3 /s=1
j'ai changé mes lettre d'appel de paramètre pour coller à ton exemple

► Afficher le texte
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Réception de paramètres

#12

Message par ricky »

J'aime bien cette dernière version, mais j'ai quelques questions, pourquoi déclarer Dim $param, $saisie et jamais les utiliser?

Petite erreur à la ligne 2 $$cmdline[0]->$cmdline[0]

Dans les case il faut mettre /a, sinon, ça ne marche pas.

Ça marche bien. Merci beaucoup pour vos aides. Si vous avez d'autres codes...
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] Réception de paramètres

#13

Message par Yogui »

pourquoi déclarer Dim $param, $saisie et jamais les utiliser?
m'apprendra à ne pas me relire ...
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Réception de paramètres

#14

Message par ricky »

Mais pourquoi déclarer des Dim?
Avatar du membre
Yogui
Niveau 9
Niveau 9
Messages : 689
Enregistré le : ven. 18 avr. 2008 17:29
Status : Hors ligne

Re: [..] Réception de paramètres

#15

Message par Yogui »

l'habitude du vb en faite, je programme comme un cochon sans vraiment tenir compte de la portée des variables ce qui n'est pas bien du tout.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [R] Réception de paramètres

#16

Message par ricky »

Voilà, j'ai mis en résolu.

Le code ci-dessus, pourrais presque faire partie des exemples, non?
Répondre