Bonjour !
Je voudrais envoyer plusieurs commandes(arguments) mais ceux ci contiennent des espaces:
app.exe "param 1" "param 2"
mais je n'y arrive pas. Pouvez vous m'aider ? merci !
P.S j'utilise:
args=Split(command()," ")
Bonjour !
Je voudrais envoyer plusieurs commandes(arguments) mais ceux ci contiennent des espaces:
app.exe "param 1" "param 2"
mais je n'y arrive pas. Pouvez vous m'aider ? merci !
P.S j'utilise:
args=Split(command()," ")
tu peux utiliser un caractère générique (genre %, par exemple) dans tes arguments
tu fais le Split puis un Replace de ton caractère par un espace dans chaque argument
D'accord. Mais je pensais à séparer les deux paramètres(qui contiennent des espaces) par des guillemets.
"parametre_un"_"parametre_2"
Le _ simbolise un espace.
Salut
Si j'ai bien compris ta question, il s'agit de paramètres de ligne de commande pour appeler ton appli? Si oui, va faire un tour sur le forum Développement Windows. Mais à mon avis, tu peux pas mettre d'espaces dans tes valeurs d'arguments. En tous cas, j'ai jamais vu ça.
Il s'agit juste d'un traitement sur une chaine de caractères. La seule difficulté est de déterminer les espaces séparateurs et les guillemets.
Voici un exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 Public Sub Main() Dim tabArgs() As String GetArgs Command(), tabArgs For Index = LBound(tabArgs) To UBound(tabArgs) Debug.Print tabArgs(Index) Next Index End Sub Private Sub GetArgs(strCmd As String, ByRef args() As String) Dim Index As Integer Const DELIMITER As String = " " Const BLOCK As String = "||" strCmd = SpecialReplace(strCmd, DELIMITER, BLOCK) args = Split(strCmd, DELIMITER) For Index = LBound(args) To UBound(args) args(Index) = Replace(args(Index), BLOCK, DELIMITER) Next Index End Sub Private Function SpecialReplace(ByVal strString As String, strSearch As String, strReplace As String) As String Dim flagReplace As Boolean Dim Index As Integer Dim CurrentChar As String For Index = 1 To Len(strString) CurrentChar = Mid(strString, Index, 1) If CurrentChar = Chr(34) Then flagReplace = Not flagReplace If CurrentChar = strSearch And flagReplace Then CurrentChar = strReplace SpecialReplace = SpecialReplace & CurrentChar Next Index SpecialReplace = Replace(SpecialReplace, Chr(34), vbNullString) End Function
Si tu passes en paramètre de GetArgs cette chaine :
Tu obtiens alors :Si tu passes "en paramètre" de "GetArgs cette chaine"
Cela répond-il à ta question?tabArgs(0) = Si
tabArgs(1) = tu
tabArgs(2) = passes
tabArgs(3) = en paramètre
tabArgs(4) = de
tabArgs(5) = GetArgs cette chaine
Exactement ce que je cherchais ! Merci Catbull !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager