Recupérer des paramètres sur la ligne de commande

Contenu du snippet

Une petite source sans prétention afin d'aider ceux en galère (si tu ne te sens pas concerné alors ne t'y arrête pas) qui permet de récupérer les paramètres que l'on place sur la ligne de commande.

Qu'est-ce que la ligne de commande ? cliquer sur Projets/Propriétés puis sur le 2ème onglet (Make en anglais) il y a une texte box "Arguments de la ligne de commande"
Lorsque le projet est compilé il suffit de tirer un raccourci du .exe et puis on peut les mettre dans Propriétés "Cible"

A quoi cela sert ? si par exemple l'on veut que le programme s'execute de tel ou tel façon (si il y tel argument tu fais ça sinon...) par exemple en anglais ou en Francais il suffit d'y mettre l'option /language=Anglais sinon si le programme ne le trouve pas il sera par défault en français ou bien pour déboguer le programme sans devoir l'executer en mode débug on met l'option /debug=1 et le programme comprendra qu'il faut écrire un fichier quelque part pour que l'utilisateur comprenne pourquoi le prog ne fonctionne pas

Comment on s'en sert ? pour plus de clarté mettre les arguments de tel manière /paramètre=XXX /language=YYY
Attention tous les arguments sont séparés par un espace

Dans le programme pour faire un appel de la fonction faire:

Dim ParamRecupere As String
ParamRecupere = sRecupererParamLigneCommande("/Language=")

et l'on obtiendras dans la variable ParamRecupere ce qu'il y a après "/Language="
par exemple

If ParamRecupere = "Anglais" then
Afficher programme en anglais
else
Afficher programme en français
end if

Source / Exemple :


'***************************  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

Conclusion :


' à mettre dans un module
' n'hesitez pas à me contacter pour des questions ou pour améliorer la source et notez please !!

' je rappelle que cette source est faite par un débutant pour débutant ne soyez pas sévère

A voir également

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.