5/5 (26 avis)
Snippet vu 20 481 fois - Téléchargée 30 fois
'*************************** ANCIENNE VERSION : ***************************** '****************************************************************************** '* fonction qui récupère l'entete du paramètre sur la ligne de commande '* et renvoi le paramètre correspondant '* '* utilise la fonction iNbrArg pour connaitre le nombre d'arguments sur la '* ligne de commande (séparés par un espace) '* '* utilise la fonction iNumArg qui retourne l'argument correspondant '* à une position dans la ligne de commande '****************************************************************************** Public Function sRecupererParamLigneCommande(ByVal sEntete As String) As String Dim i As Integer For i = 0 To iNbrArg() If Left$(UCase$(iNumArg(i)), Len(UCase$(sEntete))) = UCase$(sEntete) Then sRecupererParamLigneCommande = Mid$(iNumArg(i), Len(sEntete) + 1) End If Next i End Function '****************************************************************************** '* Cette fonction retourne le nombre d'argument de la ligne de commande '****************************************************************************** Function iNbrArg() As Integer Dim i As Integer Dim iNbArg As Integer 'compte le nombre d'arguments iNbArg = 0 If Len(Trim$(Command$)) > 0 Then For i = 1 To Len(Trim$(Command$)) 's'il y a un blanc alors c'est un nouveau param sur la ligne de cmd If (Mid$(Command$, i, 1) = " ") Or (i = Len(Command$)) Then iNbArg = iNbArg + 1 End If Next i End If iNbrArg = iNbArg End Function '****************************************************************************** '* Cette fonction retourne l'argument correspondant à une position '* dans la ligne de commande '* (Le premier argument a le numéro 0) '****************************************************************************** Function iNumArg(ByVal iNbrArg As Integer) As String Dim i As Integer Dim iNbArg As Integer Dim sArg As String iNbArg = 0 sArg = "" If Len(Trim$(Command$)) > 0 Then For i = 1 To Len(Trim$(Command$)) sArg = sArg & Mid$(Command$, i, 1) If (Mid$(Command$, i, 1) = " ") Or (i = Len(Command$)) Then If iNbArg = iNbrArg Then iNumArg = Trim$(sArg) Else sArg = "" End If iNbArg = iNbArg + 1 End If Next i End If End Function '*************************** NOUVELLE VERSION : ***************************** '****************************************************************************** '* renvoie la valeur du parametre demande '* format /PAR:NNNN pour une meilleure visualisation '* '* le nom du parametre ne contient pas forcement un "/" ou un "=" puisque '* celui ci fait parti du nom '* Attention : chaque parametre doit etre separe par un blanc '****************************************************************************** Function sRecupererParamLigneCommande(sNomParametre As String) As String Dim iPos As Integer Dim iposFin As Integer ' on recherche le nom de parametre iPos = InStr(Command$, sNomParametre) If iPos > 0 Then iposFin = InStr(iPos, Command$, " ") If iposFin > 0 Then ' on a un blanc derriere le parametre sRecupererParamLigneCommande = Mid$(Command$, iPos + Len(sNomParametre), iposFin - iPos - Len(sNomParametre)) Else ' on est a la fin de la ligne de parametres et l'on n'a pas de blancs sRecupererParamLigneCommande = Mid$(Command$, iPos + Len(sNomParametre)) End If Else sRecupererParamLigneCommande = "" End If End Function
16 sept. 2005 à 16:21
Pour info, en beaucoup moins de lignes, avec la fonction Split :
Dim tablo() As String
dim slignedecommande As String
slignecommande = "monprog.exe param1 -param2 param3"
tablo = Split(slignecommande, " ", , vbTextCompare)
MsgBox "Nombre d'arguments : " & UBound(tablo)
MsgBox "Deuxième argument : " & tablo(2)
16 sept. 2005 à 22:50
17 sept. 2005 à 12:12
Bonne Continuation.
17 sept. 2005 à 13:19
Merci les gars. et dès que j'ai le temps j'y ajoute la fonction "split" (je la connaissais déjà mais j'ai préféré boucler va savoir pourquoi...)
enfin je ne pense pas que le fait de ne pas y avoir mis cette fonction vaut en 2/10 à ma source mais c'est vrai que comme le dis ASIMENGO sur sa fiche la clarté et la finesse d'un code est aussi important que sa fonction elle même.
sur ce bonne prog à tous !!
28 juin 2011 à 14:09
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.