[R] Réception de paramètres
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- ricky
- Niveau 7
- Messages : 443
- Enregistré le : ven. 06 févr. 2009 09:25
- Localisation : Suisse
- Status : Hors ligne
[R] Réception de paramètres
Hello,
quelle est la fonction pour détecter si on envoie ou pas des paramètres au exe?
Merci d'avance pour votre aide.
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.
Re: [...] réception de paramètres
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
- ricky
- Niveau 7
- Messages : 443
- Enregistré le : ven. 06 févr. 2009 09:25
- Localisation : Suisse
- Status : Hors ligne
Re: [...] Réception de paramètres
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?
Re: [...] Réception de paramètres
je pense avoir besoin de plus de précision :s

/c=c:\Temp

- ricky
- Niveau 7
- Messages : 443
- Enregistré le : ven. 06 févr. 2009 09:25
- Localisation : Suisse
- Status : Hors ligne
Re: [...] Réception de paramètres
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.
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.
Re: [...] Réception de paramètres
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
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
Edit pour prendre en compte les modifications de tolf (mais celui de Tlem est plus propre)
enfin je met mon code ici je suis 100 % certain qu'il doit y avoir plus simple

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

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.
- ricky
- Niveau 7
- Messages : 443
- Enregistré le : ven. 06 févr. 2009 09:25
- Localisation : Suisse
- Status : Hors ligne
Re: [...] Réception de paramètres
Ah ok, merci, ça devient vite compliqué. J'espère qu'il existe moins compliqué quand même.
Merci beaucoup pour ton aide
Merci beaucoup pour ton aide
-
- Niveau 7
- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Réception de paramètres
@Yogui : Pensez à utiliser l'outil "Tidy" de Scite (raccourci CTRL+T) pour rendre votre code plus lisible
(les ElseIf en escalier ça fait mal aux yeux
)


Re: [..] Réception de paramètres
Merci pour le tidy je ne connaissait pas
et pour le elseif en escalier en fait j'ai fini vite sans prendre le temps de faire un case
edit : correction avec du code en suivant les recommandations

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

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.
- Tlem
- Site Admin
- Messages : 11784
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Réception de paramètres
Voici une autre solution :
Ce n'est pas forcément plus simple, mais épuré de toutes les fioritures, le code tient sur 12 lignes.
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.
► Afficher le textecode

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é".
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é".
Re: [..] Réception de paramètres
Le même avec une étape en moins qui ne sert à rien il devient donc plus simple
l'appel se fait toujours j'ai changé mes lettre d'appel de paramètre pour coller à ton exemple
l'appel se fait toujours
Code : Tout sélectionner
test.exe /a=salut /c=c:\temp /t=3 /s=1
► Afficher le texte
- ricky
- Niveau 7
- Messages : 443
- Enregistré le : ven. 06 févr. 2009 09:25
- Localisation : Suisse
- Status : Hors ligne
Re: [..] Réception de paramètres
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...
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...
Re: [..] Réception de paramètres
m'apprendra à ne pas me relire ...pourquoi déclarer Dim $param, $saisie et jamais les utiliser?
- ricky
- Niveau 7
- Messages : 443
- Enregistré le : ven. 06 févr. 2009 09:25
- Localisation : Suisse
- Status : Hors ligne
Re: [..] Réception de paramètres
Mais pourquoi déclarer des Dim?
Re: [..] Réception de paramètres
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.
- ricky
- 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
Voilà, j'ai mis en résolu.
Le code ci-dessus, pourrais presque faire partie des exemples, non?
Le code ci-dessus, pourrais presque faire partie des exemples, non?