Page 1 sur 1

[R] Réception de paramètres

Posté : lun. 09 févr. 2009 10:55
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.

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

Posté : lun. 09 févr. 2009 11:15
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

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

Posté : mar. 10 févr. 2009 14:00
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?

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

Posté : mar. 10 févr. 2009 14:53
par Yogui
je pense avoir besoin de plus de précision :s
/c=c:\Temp
:?:

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

Posté : mar. 10 févr. 2009 14:59
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.

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

Posté : mar. 10 févr. 2009 15:56
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)

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

Posté : mar. 10 févr. 2009 16:15
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

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

Posté : mar. 10 févr. 2009 20:55
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 :| )

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

Posté : mar. 10 févr. 2009 22:20
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

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

Posté : mar. 10 févr. 2009 22:26
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. ;)

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

Posté : mer. 11 févr. 2009 08:42
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

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

Posté : mer. 11 févr. 2009 10:08
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...

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

Posté : mer. 11 févr. 2009 10:19
par Yogui
pourquoi déclarer Dim $param, $saisie et jamais les utiliser?
m'apprendra à ne pas me relire ...

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

Posté : mer. 11 févr. 2009 11:43
par ricky
Mais pourquoi déclarer des Dim?

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

Posté : mer. 11 févr. 2009 11:51
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.

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

Posté : mer. 11 févr. 2009 14:56
par ricky
Voilà, j'ai mis en résolu.

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