Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Condition dans le contenu d'une variable "string"

7 réponses
Avatar
jc
Bonjour,

comment faire pour obtenir le résultat du contenu de la variable var dans
result?

dim var as string
dim result as bool
var = "1001 > 1000"
result = ???

Merci de vos reponse ...

JC

7 réponses

Avatar
jean-marc
"jc" wrote in message
news:4742e6a8$0$8072$
Bonjour,

comment faire pour obtenir le résultat du contenu de la variable var dans
result?

dim var as string
dim result as bool
var = "1001 > 1000"
result = ???



Hello,

ca dépend de ce que tu compares..

Faisons le avec des entiers:

Dim n1 as Long, n2 as Long
dim bResult as Boolean

n1 = 1000
n2 = 1001

bResult = (n1 > n2)

msgbox bResult


Dans cet exemple, bResult aura la valeur : False

Avec des chaines de caracteres, c'est le meme
principe:

Dim s1 as String, s2 as String
dim bResult as Boolean

s1 = "LAPIN"
s2 = "CHASSEUR"

bResult = (s1 > s2)

msgbox bResult

Ici, bresult aura la valeur : True


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
jc
Ok,

Merci de réponse ultra rapide ;-)

Dans mon cas c'est une variable text de type "< 1001" .

Mon pb est surment au niveau syntaxe :

Dim compar as string

Compar="<1000"

Resultat = 10000 & compare ( mon erreur est là car je ne sais pas comment
ecrire )

Resultat me donnerai true ou false suivant le resultat mais c la derniere
ligne que je ne sais ecrire

Ais je été assez claire ds ma galere?

jc

"jean-marc" a écrit dans le message de news:
4742e861$0$22312$
"jc" wrote in message
news:4742e6a8$0$8072$
Bonjour,

comment faire pour obtenir le résultat du contenu de la variable var dans
result?

dim var as string
dim result as bool
var = "1001 > 1000"
result = ???



Hello,

ca dépend de ce que tu compares..

Faisons le avec des entiers:

Dim n1 as Long, n2 as Long
dim bResult as Boolean

n1 = 1000
n2 = 1001

bResult = (n1 > n2)

msgbox bResult


Dans cet exemple, bResult aura la valeur : False

Avec des chaines de caracteres, c'est le meme
principe:

Dim s1 as String, s2 as String
dim bResult as Boolean

s1 = "LAPIN"
s2 = "CHASSEUR"

bResult = (s1 > s2)

msgbox bResult

Ici, bresult aura la valeur : True


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;









Avatar
Jean-marc
jc wrote:
Ok,

Merci de réponse ultra rapide ;-)

Dans mon cas c'est une variable text de type "< 1001" .

Mon pb est surment au niveau syntaxe :

Dim compar as string

Compar="<1000"

Resultat = 10000 & compare ( mon erreur est là car je ne sais pas
comment ecrire )

Resultat me donnerai true ou false suivant le resultat mais c la
derniere ligne que je ne sais ecrire

Ais je été assez claire ds ma galere?



Hello,

C'est clair en effet.

VB ne permet pas de le faire directement, MAIS le Script
Control permet de le faire comme indiqué dans notre
FAQ : http://faq.vb.free.fr/index.php?question1

Voici un exemple qui fonctionne (sous réserve d'avoir lu
l'article de la FAQ) :

'8<--------------------------------
Private Sub Command1_Click()

Dim sc As ScriptControl
Dim compar As String
Dim bRet As Boolean

Set sc = New ScriptControl

sc.Language = "VBScript"

compar = "<500"

bRet = CBool(sc.Eval("1000" & compar))

MsgBox "resultat : " & bRet

Set sc = Nothing
End Sub
'8<--------------------------------

Ceci dit, il faut probablement s'interroger sur le
besoin de devoir faire ce genre de truc...

D'autre part utiliser le script control n'est pas sans
inconvénients (Cf l'article de la FAQ).

Il serait infiniment plus propre d'isoler l'opérateur de
comparaison et les valeur à comparer, puis de faire une évaluation
clean, pure VB, comme ça par exemple :

'
' La fonction
'
Function My_Eval(ByVal v1 As Long, _
ByVal v2 As Long, _
ByVal operateur As String) As Boolean

Select Case operateur
Case "<"
My_Eval = (v1 < v2)
Case ">"
My_Eval = (v1 > v2)
Case "="
My_Eval = (v1 = v2)
' autres operateurs si nécessaire
End Select

End Function

'
' Puis l'utilisation
'
Private Sub Command1_Click()
Dim szValue1 As String
Dim szValue2 As String
Dim v1 As Long, v2 As Long
Dim operateur As String
Dim bResult As Boolean


szValue1 = "1000"
szValue2 = "2000"
operateur = "<"

v1 = CLng(szValue1)
v2 = CLng(szValue2)

bResult = My_Eval(v1, v2, operateur)

End Sub

Bon, dans un vrai programme pour faire des vraies choses
de la vraie vie (!), on blindera tout ça, en implémentant
plus d'opérateurs, en retournant des codes d'erreurs quand
nécessaire, gérer tous les types, etc.

La seconde méthode est à mon sens de (très) loin la meilleure.

Voila, bonne prog !

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
Bonsoir,

Moi je n'ai pas tout compris...
Tu voudrais comparer deux valeurs, et suivant
le résultat, donner une valeur à une variable
boolean ???

dim i as long
dim j as long
dim k as boolean
i
j
if i => j then k = true
if i < j then k = false

Mais... sauf si vraiment t'en as besoin, pourquoi
ne pas tester directement, au lieu de mettre dans
une variable, qu'il faudra ensuite que tu testes
(if k = true then ...) ???
if i => j then ...

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"jc" a écrit dans le message de
news: 4742e6a8$0$8072$
| Bonjour,
|
| comment faire pour obtenir le résultat du
contenu de la variable var dans
| result?
|
| dim var as string
| dim result as bool
| var = "1001 > 1000"
| result = ???
|
| Merci de vos reponse ...
|
| JC
|
|
|
Avatar
Patrice Henrio
LE TROLL a écrit :
Bonsoir,

Moi je n'ai pas tout compris...
Tu voudrais comparer deux valeurs, et suivant
le résultat, donner une valeur à une variable
boolean ???

dim i as long
dim j as long
dim k as boolean
i
j
if i => j then k = true
if i < j then k = false

Mais... sauf si vraiment t'en as besoin, pourquoi
ne pas tester directement, au lieu de mettre dans
une variable, qu'il faudra ensuite que tu testes
(if k = true then ...) ???
if i => j then ...



il n'y a pas de fautes de syntaxe dans ce que tu écris le troll mais les
booléens peuvent s'utiliser comme des variables ordinaires donc

dim i as long
dim j as long
dim k as boolean
i
j
k=(i>=j)

cette dernière ligne remplace tes deux tests comme indiqué par Jean-Marc
dans sa première réponse.

Dans un test if, il est parfaitement inutile d'écrire
if k=true then

la bonne écriture est
if k then

D'ailleurs il vaut mieux donner un nom explicite à la variable, par
exemple condition au lieu de k

soit
condition = (i>=k)
if condition then
<traitement if>
else
<traitement else>
end if
Il peut s'avérer que la partie réellement importante du programme soit
justement le retour de condition.
Avatar
LE TROLL
Patrice,

Oui, pour le nom, vaut mieux donner un nom
explicite, c'était pour l'exemple, pardon :o)

Je sais bien que la syntaxe "officielle" c'est

if k ...

Mais, je ne peux m'y faire, des trucs dans le
genre:
i>=k
ou
i++
ou
x = y = z (c),

Ben, je trouve ça totalement non significatif, ça
détériore la phrase, ça me fait penser à un sms...

Je trouve qu'on percute plus rapidement sur
i = i + 1;
que sur
i++;

D'ailleurs, on peut écrire en ancien VB, comme en
C, en remplaçant le ";" par ":", en collant
tout...

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------



"Patrice Henrio" a
écrit dans le message de news:

| LE TROLL a écrit :
| > Bonsoir,
| >
| > Moi je n'ai pas tout compris...
| > Tu voudrais comparer deux valeurs, et
suivant
| > le résultat, donner une valeur à une variable
| > boolean ???
| >
| > dim i as long
| > dim j as long
| > dim k as boolean
| > i
| > j
| > if i => j then k = true
| > if i < j then k = false
| >
| > Mais... sauf si vraiment t'en as besoin,
pourquoi
| > ne pas tester directement, au lieu de mettre
dans
| > une variable, qu'il faudra ensuite que tu
testes
| > (if k = true then ...) ???
| > if i => j then ...
| >
| il n'y a pas de fautes de syntaxe dans ce que tu
écris le troll mais les
| booléens peuvent s'utiliser comme des variables
ordinaires donc
|
| dim i as long
| dim j as long
| dim k as boolean
| i
| j
| k=(i>=j)
|
| cette dernière ligne remplace tes deux tests
comme indiqué par Jean-Marc
| dans sa première réponse.
|
| Dans un test if, il est parfaitement inutile
d'écrire
| if k=true then
|
| la bonne écriture est
| if k then
|
| D'ailleurs il vaut mieux donner un nom explicite
à la variable, par
| exemple condition au lieu de k
|
| soit
| condition = (i>=k)
| if condition then
| <traitement if>
| else
| <traitement else>
| end if
| Il peut s'avérer que la partie réellement
importante du programme soit
| justement le retour de condition.
|
|
Avatar
jc
merci de vos réponses,

effectivement en isolant le caractere de comparaison tout fonctionne bien
(et clairement) dc aps de soucis ...

Merdi de vos reponse en tt cas , instructif en tt cas !

Topet' jicé
"LE TROLL" <le a écrit dans le message de news:
%23G%
Patrice,

Oui, pour le nom, vaut mieux donner un nom
explicite, c'était pour l'exemple, pardon :o)

Je sais bien que la syntaxe "officielle" c'est

if k ...

Mais, je ne peux m'y faire, des trucs dans le
genre:
i>=k
ou
i++
ou
x = y = z (c),

Ben, je trouve ça totalement non significatif, ça
détériore la phrase, ça me fait penser à un sms...

Je trouve qu'on percute plus rapidement sur
i = i + 1;
que sur
i++;

D'ailleurs, on peut écrire en ancien VB, comme en
C, en remplaçant le ";" par ":", en collant
tout...

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------



"Patrice Henrio" a
écrit dans le message de news:

| LE TROLL a écrit :
| > Bonsoir,
| >
| > Moi je n'ai pas tout compris...
| > Tu voudrais comparer deux valeurs, et
suivant
| > le résultat, donner une valeur à une variable
| > boolean ???
| >
| > dim i as long
| > dim j as long
| > dim k as boolean
| > i
| > j
| > if i => j then k = true
| > if i < j then k = false
| >
| > Mais... sauf si vraiment t'en as besoin,
pourquoi
| > ne pas tester directement, au lieu de mettre
dans
| > une variable, qu'il faudra ensuite que tu
testes
| > (if k = true then ...) ???
| > if i => j then ...
| >
| il n'y a pas de fautes de syntaxe dans ce que tu
écris le troll mais les
| booléens peuvent s'utiliser comme des variables
ordinaires donc
|
| dim i as long
| dim j as long
| dim k as boolean
| i
| j
| k=(i>=j)
|
| cette dernière ligne remplace tes deux tests
comme indiqué par Jean-Marc
| dans sa première réponse.
|
| Dans un test if, il est parfaitement inutile
d'écrire
| if k=true then
|
| la bonne écriture est
| if k then
|
| D'ailleurs il vaut mieux donner un nom explicite
à la variable, par
| exemple condition au lieu de k
|
| soit
| condition = (i>=k)
| if condition then
| <traitement if>
| else
| <traitement else>
| end if
| Il peut s'avérer que la partie réellement
importante du programme soit
| justement le retour de condition.
|
|