Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1)
OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1)
OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1)
OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1) OR
1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1) OR
1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1) OR
1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1
AND 1) OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1
AND 1) OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1
AND 1) OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Bonjour,
Tu parles du décalage des bits dans un octet là, ou d'un valeur de
variable ?
Puis tu dis : "Comment la calculer pour obtenir le résultat = 1 dans le
code ?"
Mais dans le code tu ne peux rien obtenir, à moins de générer du code
dans une autre fichier à partir de ton programme, en effet, c'est dans des
variables ou fichiers que le résultat va s'afficher, pas dans le code ?
Et "1" c'est quoi ?
Car une variable ne peux pas commencer par un chiffre (v1), et "1" est
censé contenir quoi pour l'exemple ?
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Marc" a écrit dans le message de
news:
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1)
OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour,
Tu parles du décalage des bits dans un octet là, ou d'un valeur de
variable ?
Puis tu dis : "Comment la calculer pour obtenir le résultat = 1 dans le
code ?"
Mais dans le code tu ne peux rien obtenir, à moins de générer du code
dans une autre fichier à partir de ton programme, en effet, c'est dans des
variables ou fichiers que le résultat va s'afficher, pas dans le code ?
Et "1" c'est quoi ?
Car une variable ne peux pas commencer par un chiffre (v1), et "1" est
censé contenir quoi pour l'exemple ?
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Marc" <contact@asubstra.com> a écrit dans le message de
news:OHBP8VhYKHA.1648@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1)
OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour,
Tu parles du décalage des bits dans un octet là, ou d'un valeur de
variable ?
Puis tu dis : "Comment la calculer pour obtenir le résultat = 1 dans le
code ?"
Mais dans le code tu ne peux rien obtenir, à moins de générer du code
dans une autre fichier à partir de ton programme, en effet, c'est dans des
variables ou fichiers que le résultat va s'afficher, pas dans le code ?
Et "1" c'est quoi ?
Car une variable ne peux pas commencer par un chiffre (v1), et "1" est
censé contenir quoi pour l'exemple ?
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Marc" a écrit dans le message de
news:
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1)
OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Marc wrote:Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1
AND 1) OR 1"
Il serait intéressant de savoir d'ou vient cette chaine de caractère.
Est ce toi qui la construit ?Comment la calculer pour obtenir le résultat = 1 dans le code ?
La chaine a-t-elle toujours cette forme :
"(a AND b) OR c" (avec a et b variables, valant 0 ou 1)Ca me rappel les table de vérité avec les portes en électronique.
De fait, c'est la même chose.
De la réponse aux questions ci-dessus dépendra la réponse ...
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Marc wrote:
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1
AND 1) OR 1"
Il serait intéressant de savoir d'ou vient cette chaine de caractère.
Est ce toi qui la construit ?
Comment la calculer pour obtenir le résultat = 1 dans le code ?
La chaine a-t-elle toujours cette forme :
"(a AND b) OR c" (avec a et b variables, valant 0 ou 1)
Ca me rappel les table de vérité avec les portes en électronique.
De fait, c'est la même chose.
De la réponse aux questions ci-dessus dépendra la réponse ...
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Marc wrote:Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1
AND 1) OR 1"
Il serait intéressant de savoir d'ou vient cette chaine de caractère.
Est ce toi qui la construit ?Comment la calculer pour obtenir le résultat = 1 dans le code ?
La chaine a-t-elle toujours cette forme :
"(a AND b) OR c" (avec a et b variables, valant 0 ou 1)Ca me rappel les table de vérité avec les portes en électronique.
De fait, c'est la même chose.
De la réponse aux questions ci-dessus dépendra la réponse ...
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1)
OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1)
OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND 1)
OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Merci le Troll de ton intervention,
les 1 sont des réultats binaire de condition:
Je m'explique
Je suis en train de recréer des fichier sequentil indexe et je fait csuis en
train de creer un systeme de requete:
Voici une requete type: SELECT * FROM VILLE WHERE (CPu000 AND VILLE =PARIS)
OR VALIDER=1 etc .. etc ...
1) Je cherche sur mon fichier un enregistrement ou il y aura CPu000,
VILLE=PARIS, VALIDER=1
2) J'affecte le resultat 1 a chaque condition correct là on 1 partout
si CPu000, VILLE=PARIS, VALIDER=1 donne "1 1 1"
si CPu010, VILLE=PARIS, VALIDER=0 donne "0 1 0"
A partir de resultat j'utilise les table de verite comme pour les portes en
éléctronique, je traduis:
Pour info si tu ne connais pas:
0 AND 0 = 0 0 OR 0 = 0
1 AND 0 = 0 0 OR 1 = 1
0 AND 1 = 0 1 OR 1 = 1
1 AND 1 = 1 1 OR 1 = 1
Var= "(1 AND 1) OR 1"
Voici le calcul fait à la main, à faire faire au processeur: (1 AND 1) = (1)
-> (1) OR 1 = 1 -> donc Var = 1
Le 1 qui est dans Var valide ou non la selection de l'enregistrement pour le
renvoyer au client.
Le problème est: comment rendre la chaîne calculable, cela reviens presque à
une chaine de caracrtères sous excel à calculer mais avec AND et OR.
Je ne suis pas sur d'être clair, enfin j'ai essayé.
Marc
Merci le Troll de ton intervention,
les 1 sont des réultats binaire de condition:
Je m'explique
Je suis en train de recréer des fichier sequentil indexe et je fait csuis en
train de creer un systeme de requete:
Voici une requete type: SELECT * FROM VILLE WHERE (CPu000 AND VILLE =PARIS)
OR VALIDER=1 etc .. etc ...
1) Je cherche sur mon fichier un enregistrement ou il y aura CPu000,
VILLE=PARIS, VALIDER=1
2) J'affecte le resultat 1 a chaque condition correct là on 1 partout
si CPu000, VILLE=PARIS, VALIDER=1 donne "1 1 1"
si CPu010, VILLE=PARIS, VALIDER=0 donne "0 1 0"
A partir de resultat j'utilise les table de verite comme pour les portes en
éléctronique, je traduis:
Pour info si tu ne connais pas:
0 AND 0 = 0 0 OR 0 = 0
1 AND 0 = 0 0 OR 1 = 1
0 AND 1 = 0 1 OR 1 = 1
1 AND 1 = 1 1 OR 1 = 1
Var= "(1 AND 1) OR 1"
Voici le calcul fait à la main, à faire faire au processeur: (1 AND 1) = (1)
-> (1) OR 1 = 1 -> donc Var = 1
Le 1 qui est dans Var valide ou non la selection de l'enregistrement pour le
renvoyer au client.
Le problème est: comment rendre la chaîne calculable, cela reviens presque à
une chaine de caracrtères sous excel à calculer mais avec AND et OR.
Je ne suis pas sur d'être clair, enfin j'ai essayé.
Marc
Merci le Troll de ton intervention,
les 1 sont des réultats binaire de condition:
Je m'explique
Je suis en train de recréer des fichier sequentil indexe et je fait csuis en
train de creer un systeme de requete:
Voici une requete type: SELECT * FROM VILLE WHERE (CPu000 AND VILLE =PARIS)
OR VALIDER=1 etc .. etc ...
1) Je cherche sur mon fichier un enregistrement ou il y aura CPu000,
VILLE=PARIS, VALIDER=1
2) J'affecte le resultat 1 a chaque condition correct là on 1 partout
si CPu000, VILLE=PARIS, VALIDER=1 donne "1 1 1"
si CPu010, VILLE=PARIS, VALIDER=0 donne "0 1 0"
A partir de resultat j'utilise les table de verite comme pour les portes en
éléctronique, je traduis:
Pour info si tu ne connais pas:
0 AND 0 = 0 0 OR 0 = 0
1 AND 0 = 0 0 OR 1 = 1
0 AND 1 = 0 1 OR 1 = 1
1 AND 1 = 1 1 OR 1 = 1
Var= "(1 AND 1) OR 1"
Voici le calcul fait à la main, à faire faire au processeur: (1 AND 1) = (1)
-> (1) OR 1 = 1 -> donc Var = 1
Le 1 qui est dans Var valide ou non la selection de l'enregistrement pour le
renvoyer au client.
Le problème est: comment rendre la chaîne calculable, cela reviens presque à
une chaine de caracrtères sous excel à calculer mais avec AND et OR.
Je ne suis pas sur d'être clair, enfin j'ai essayé.
Marc
Merci le Troll de ton intervention,
les 1 sont des réultats binaire de condition:
Je m'explique
Je suis en train de recréer des fichier sequentil indexe et je fait csuis
en train de creer un systeme de requete:
Voici une requete type: SELECT * FROM VILLE WHERE (CPu000 AND VILLE
=PARIS) OR VALIDER=1 etc .. etc ...
1) Je cherche sur mon fichier un enregistrement ou il y aura CPu000,
VILLE=PARIS, VALIDER=1
2) J'affecte le resultat 1 a chaque condition correct là on 1 partout
si CPu000, VILLE=PARIS, VALIDER=1 donne "1 1 1"
si CPu010, VILLE=PARIS, VALIDER=0 donne "0 1 0"
A partir de resultat j'utilise les table de verite comme pour les portes
en éléctronique, je traduis:
Pour info si tu ne connais pas:
0 AND 0 = 0 0 OR 0 = 0
1 AND 0 = 0 0 OR 1 = 1
0 AND 1 = 0 1 OR 1 = 1
1 AND 1 = 1 1 OR 1 = 1
Var= "(1 AND 1) OR 1"
Voici le calcul fait à la main, à faire faire au processeur: (1 AND 1) =
(1) -> (1) OR 1 = 1 -> donc Var = 1
Le 1 qui est dans Var valide ou non la selection de l'enregistrement pour
le renvoyer au client.
Le problème est: comment rendre la chaîne calculable, cela reviens presque
à une chaine de caracrtères sous excel à calculer mais avec AND et OR.
Je ne suis pas sur d'être clair, enfin j'ai essayé.
MarcBonjour,
Tu parles du décalage des bits dans un octet là, ou d'un valeur de
variable ?
Puis tu dis : "Comment la calculer pour obtenir le résultat = 1 dans
le code ?"
Mais dans le code tu ne peux rien obtenir, à moins de générer du code
dans une autre fichier à partir de ton programme, en effet, c'est dans
des variables ou fichiers que le résultat va s'afficher, pas dans le code
?
Et "1" c'est quoi ?
Car une variable ne peux pas commencer par un chiffre (v1), et "1" est
censé contenir quoi pour l'exemple ?
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Marc" a écrit dans le message de
news:
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND
1) OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Merci le Troll de ton intervention,
les 1 sont des réultats binaire de condition:
Je m'explique
Je suis en train de recréer des fichier sequentil indexe et je fait csuis
en train de creer un systeme de requete:
Voici une requete type: SELECT * FROM VILLE WHERE (CPu000 AND VILLE
=PARIS) OR VALIDER=1 etc .. etc ...
1) Je cherche sur mon fichier un enregistrement ou il y aura CPu000,
VILLE=PARIS, VALIDER=1
2) J'affecte le resultat 1 a chaque condition correct là on 1 partout
si CPu000, VILLE=PARIS, VALIDER=1 donne "1 1 1"
si CPu010, VILLE=PARIS, VALIDER=0 donne "0 1 0"
A partir de resultat j'utilise les table de verite comme pour les portes
en éléctronique, je traduis:
Pour info si tu ne connais pas:
0 AND 0 = 0 0 OR 0 = 0
1 AND 0 = 0 0 OR 1 = 1
0 AND 1 = 0 1 OR 1 = 1
1 AND 1 = 1 1 OR 1 = 1
Var= "(1 AND 1) OR 1"
Voici le calcul fait à la main, à faire faire au processeur: (1 AND 1) =
(1) -> (1) OR 1 = 1 -> donc Var = 1
Le 1 qui est dans Var valide ou non la selection de l'enregistrement pour
le renvoyer au client.
Le problème est: comment rendre la chaîne calculable, cela reviens presque
à une chaine de caracrtères sous excel à calculer mais avec AND et OR.
Je ne suis pas sur d'être clair, enfin j'ai essayé.
Marc
Bonjour,
Tu parles du décalage des bits dans un octet là, ou d'un valeur de
variable ?
Puis tu dis : "Comment la calculer pour obtenir le résultat = 1 dans
le code ?"
Mais dans le code tu ne peux rien obtenir, à moins de générer du code
dans une autre fichier à partir de ton programme, en effet, c'est dans
des variables ou fichiers que le résultat va s'afficher, pas dans le code
?
Et "1" c'est quoi ?
Car une variable ne peux pas commencer par un chiffre (v1), et "1" est
censé contenir quoi pour l'exemple ?
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Marc" <contact@asubstra.com> a écrit dans le message de
news:OHBP8VhYKHA.1648@TK2MSFTNGP05.phx.gbl...
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND
1) OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Merci le Troll de ton intervention,
les 1 sont des réultats binaire de condition:
Je m'explique
Je suis en train de recréer des fichier sequentil indexe et je fait csuis
en train de creer un systeme de requete:
Voici une requete type: SELECT * FROM VILLE WHERE (CPu000 AND VILLE
=PARIS) OR VALIDER=1 etc .. etc ...
1) Je cherche sur mon fichier un enregistrement ou il y aura CPu000,
VILLE=PARIS, VALIDER=1
2) J'affecte le resultat 1 a chaque condition correct là on 1 partout
si CPu000, VILLE=PARIS, VALIDER=1 donne "1 1 1"
si CPu010, VILLE=PARIS, VALIDER=0 donne "0 1 0"
A partir de resultat j'utilise les table de verite comme pour les portes
en éléctronique, je traduis:
Pour info si tu ne connais pas:
0 AND 0 = 0 0 OR 0 = 0
1 AND 0 = 0 0 OR 1 = 1
0 AND 1 = 0 1 OR 1 = 1
1 AND 1 = 1 1 OR 1 = 1
Var= "(1 AND 1) OR 1"
Voici le calcul fait à la main, à faire faire au processeur: (1 AND 1) =
(1) -> (1) OR 1 = 1 -> donc Var = 1
Le 1 qui est dans Var valide ou non la selection de l'enregistrement pour
le renvoyer au client.
Le problème est: comment rendre la chaîne calculable, cela reviens presque
à une chaine de caracrtères sous excel à calculer mais avec AND et OR.
Je ne suis pas sur d'être clair, enfin j'ai essayé.
MarcBonjour,
Tu parles du décalage des bits dans un octet là, ou d'un valeur de
variable ?
Puis tu dis : "Comment la calculer pour obtenir le résultat = 1 dans
le code ?"
Mais dans le code tu ne peux rien obtenir, à moins de générer du code
dans une autre fichier à partir de ton programme, en effet, c'est dans
des variables ou fichiers que le résultat va s'afficher, pas dans le code
?
Et "1" c'est quoi ?
Car une variable ne peux pas commencer par un chiffre (v1), et "1" est
censé contenir quoi pour l'exemple ?
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"Marc" a écrit dans le message de
news:
Bonjour à tous,
suite de mes problèmes.
Je récupère un Chaîne de caractères dans une variable exemple: "(1 AND
1) OR 1"
Comment la calculer pour obtenir le résultat = 1 dans le code ?
Ca me rappel les table de vérité avec les portes en électronique.
Par avance merci
Marc
Merci Jean-Marc,
Oui c'est moi qui construit la chaîne, tu peux voir plus haut, j'ai
Merci Jean-Marc,
Oui c'est moi qui construit la chaîne, tu peux voir plus haut, j'ai
Merci Jean-Marc,
Oui c'est moi qui construit la chaîne, tu peux voir plus haut, j'ai
Ultime remarque : As tu lu ce qui se fait en général pour
l'implémentation des fichiers séquentiels indexés ?
Si non, tu devrais jeter un oeil, c'est plein de choses intéressantes.
Tu verrais notamment qu'on utilise des méthodes très différentes
Marc wrote:Merci Jean-Marc,
Oui c'est moi qui construit la chaîne, tu peux voir plus haut, j'ai
Si tu as les valeurs, alors c'est absurde de construire la chaine
de caractères avec les AND et les OR, en tout cas inutile.
[ca n'enlève rien en soi à la méthode indiquée par Vincent, qui
s'applique sans problèmes pour d'autres cas.]
La solution donnée par at est déjà bien meilleure dans le principe.
Tu peux écrire une fonction qui prend en argument une chaine de la forme
"a b c" et qui retourne True ou False selon la formule :
r = (a AND b) OR c
Public Function MyEval(ByVal s As String) As Boolean
Dim t() As String
t = Split(s, " ")
MyEval = (CBool(t(0)) And CBool(t(1))) Or CBool(t(2))
End Function
Et pour l'utilisation :
Private Sub Form_Load()
Dim s As String
Dim r As Boolean
' Exemple
s = "1 0 1"
r = MyEval(s)
MsgBox "résultat de eval de " & s & " = " & r
End Sub
Remarque : il serait de toute façon beaucoup plus malin de
traiter le problème à la source, au moment ou tu disposes
de a, b et c.
Il suffit de remarquer que :
SI c = "1" alors
L'expression est VRAI de toute façon (1)
SINON
SI a="0" ou b="0" alors
L'expression est FAUX (0)
SINON
L'expression est VRAI (1)
FIN SI
FIN SI
ce qui donnerait :
Public Function MyEval2(ByVal a As Integer, _
ByVal b As Integer, _
ByVal c As Integer) As Boolean
If c Then
MyEval2 = True
Else
If (Not a) Or (Not b) Then
MyEval2 = False
Else
MyEval2 = True
End If
End Function
Ultime remarque : As tu lu ce qui se fait en général pour
l'implémentation des fichiers séquentiels indexés ?
Si non, tu devrais jeter un oeil, c'est plein de choses intéressantes.
Tu verrais notamment qu'on utilise des méthodes très différentes
de celles-ci pour l'accès aux enregistrements. La méthode que tu veux
employer ici est ok pour une base contenant quelques centaines
d'enregistrements, mais au dela, les performances vont être navrantes.
Si pour ton appli les perfs ne sont pas un problème [ou si les
bases ont très peu d'enregistrements], alors tout roule.
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Ultime remarque : As tu lu ce qui se fait en général pour
l'implémentation des fichiers séquentiels indexés ?
Si non, tu devrais jeter un oeil, c'est plein de choses intéressantes.
Tu verrais notamment qu'on utilise des méthodes très différentes
Marc wrote:
Merci Jean-Marc,
Oui c'est moi qui construit la chaîne, tu peux voir plus haut, j'ai
Si tu as les valeurs, alors c'est absurde de construire la chaine
de caractères avec les AND et les OR, en tout cas inutile.
[ca n'enlève rien en soi à la méthode indiquée par Vincent, qui
s'applique sans problèmes pour d'autres cas.]
La solution donnée par at est déjà bien meilleure dans le principe.
Tu peux écrire une fonction qui prend en argument une chaine de la forme
"a b c" et qui retourne True ou False selon la formule :
r = (a AND b) OR c
Public Function MyEval(ByVal s As String) As Boolean
Dim t() As String
t = Split(s, " ")
MyEval = (CBool(t(0)) And CBool(t(1))) Or CBool(t(2))
End Function
Et pour l'utilisation :
Private Sub Form_Load()
Dim s As String
Dim r As Boolean
' Exemple
s = "1 0 1"
r = MyEval(s)
MsgBox "résultat de eval de " & s & " = " & r
End Sub
Remarque : il serait de toute façon beaucoup plus malin de
traiter le problème à la source, au moment ou tu disposes
de a, b et c.
Il suffit de remarquer que :
SI c = "1" alors
L'expression est VRAI de toute façon (1)
SINON
SI a="0" ou b="0" alors
L'expression est FAUX (0)
SINON
L'expression est VRAI (1)
FIN SI
FIN SI
ce qui donnerait :
Public Function MyEval2(ByVal a As Integer, _
ByVal b As Integer, _
ByVal c As Integer) As Boolean
If c Then
MyEval2 = True
Else
If (Not a) Or (Not b) Then
MyEval2 = False
Else
MyEval2 = True
End If
End Function
Ultime remarque : As tu lu ce qui se fait en général pour
l'implémentation des fichiers séquentiels indexés ?
Si non, tu devrais jeter un oeil, c'est plein de choses intéressantes.
Tu verrais notamment qu'on utilise des méthodes très différentes
de celles-ci pour l'accès aux enregistrements. La méthode que tu veux
employer ici est ok pour une base contenant quelques centaines
d'enregistrements, mais au dela, les performances vont être navrantes.
Si pour ton appli les perfs ne sont pas un problème [ou si les
bases ont très peu d'enregistrements], alors tout roule.
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Ultime remarque : As tu lu ce qui se fait en général pour
l'implémentation des fichiers séquentiels indexés ?
Si non, tu devrais jeter un oeil, c'est plein de choses intéressantes.
Tu verrais notamment qu'on utilise des méthodes très différentes
Marc wrote:Merci Jean-Marc,
Oui c'est moi qui construit la chaîne, tu peux voir plus haut, j'ai
Si tu as les valeurs, alors c'est absurde de construire la chaine
de caractères avec les AND et les OR, en tout cas inutile.
[ca n'enlève rien en soi à la méthode indiquée par Vincent, qui
s'applique sans problèmes pour d'autres cas.]
La solution donnée par at est déjà bien meilleure dans le principe.
Tu peux écrire une fonction qui prend en argument une chaine de la forme
"a b c" et qui retourne True ou False selon la formule :
r = (a AND b) OR c
Public Function MyEval(ByVal s As String) As Boolean
Dim t() As String
t = Split(s, " ")
MyEval = (CBool(t(0)) And CBool(t(1))) Or CBool(t(2))
End Function
Et pour l'utilisation :
Private Sub Form_Load()
Dim s As String
Dim r As Boolean
' Exemple
s = "1 0 1"
r = MyEval(s)
MsgBox "résultat de eval de " & s & " = " & r
End Sub
Remarque : il serait de toute façon beaucoup plus malin de
traiter le problème à la source, au moment ou tu disposes
de a, b et c.
Il suffit de remarquer que :
SI c = "1" alors
L'expression est VRAI de toute façon (1)
SINON
SI a="0" ou b="0" alors
L'expression est FAUX (0)
SINON
L'expression est VRAI (1)
FIN SI
FIN SI
ce qui donnerait :
Public Function MyEval2(ByVal a As Integer, _
ByVal b As Integer, _
ByVal c As Integer) As Boolean
If c Then
MyEval2 = True
Else
If (Not a) Or (Not b) Then
MyEval2 = False
Else
MyEval2 = True
End If
End Function
Ultime remarque : As tu lu ce qui se fait en général pour
l'implémentation des fichiers séquentiels indexés ?
Si non, tu devrais jeter un oeil, c'est plein de choses intéressantes.
Tu verrais notamment qu'on utilise des méthodes très différentes
de celles-ci pour l'accès aux enregistrements. La méthode que tu veux
employer ici est ok pour une base contenant quelques centaines
d'enregistrements, mais au dela, les performances vont être navrantes.
Si pour ton appli les perfs ne sont pas un problème [ou si les
bases ont très peu d'enregistrements], alors tout roule.
Cordialement,
--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;