Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Utiliser la calculatrice pour traiter des fonctions binaires [ Archives Visual Basic / Maths ] (Daghis)

vendredi 18 mars 2005 à 15:38:32 | Utiliser la calculatrice pour traiter des fonctions binaires

Daghis

Coment utiliser la calculatrice (ou autre) en lui envoyant la valeur booléenne de mes variables comme suivant:
(1 and ((0 or 1) and (1 xor 0) or 1) or 1) et récupérer le résultat dans mon programme.

J'ai recherché dans les OCX, je n'ai rien trouvé

Merci  d'avance !

vendredi 18 mars 2005 à 19:36:33 | Re : Utiliser la calculatrice pour traiter des fonctions binaires

CanisLupus

Membre Club Administrateur CodeS-SourceS
Salut,

En VB, on peut faire ça sans ocx ni calculatrice. Il suffit de déclarer la varaible réceptrice non pas en boolean mais en integer.

Dim b As Integer
b = (1 And ((0 Or 1) And (1 Xor 0) Or 1) Or 1)
MsgBox b


Loup Gris

samedi 19 mars 2005 à 19:24:08 | Re : Utiliser la calculatrice pour traiter des fonctions binaires

Daghis

Loup Gris,

Je te remercie pour ta réponse.
Mais je me rends compte que j'ai  mal formulé ma question.
En effet, je récupére des formules de type texte comme :
   "LS and LT or (LS and LU) and LV"
   "Not (LS and (LT or(LS an LU)) and LV)"
   etc...

Je sais comment rechercher dans le texte et traiter individuellement les variables concernées pour en connaitre leur valeur booléenne de la manière suivante :

Dim LT as booléan
Dim LS as booléan
LS = 1 ' Etat qui change suivant le programme
LT = 0 ' Etat qui change suivant le programme
etc...
Function Etat(byval Texte as String) as booléen
Select Case Texte
   Case "LS": Etat = LS
   Case "LT": Etat = LT
   etc...
End Select
end Function

 Les formules ne sont jamais identiques et je ne sais jamais ou seront les or and et surtout où seront placées les parenthéses. 
En résumé je voudrais envoyé toute la formule :
"LS and LT or (LS and LU) and LT" transfomée en
1 and 0 or (1 and 0) and 0
et en recevoir le résultat.

Daghis




samedi 19 mars 2005 à 21:40:25 | Re : Utiliser la calculatrice pour traiter des fonctions binaires

CanisLupus

Membre Club Administrateur CodeS-SourceS

Pour ce qui est de transformer une chaine comme s="LS and LT or (LS and LU) and LT", je ferais plutôt :
replace (s,"LS",LS)
replace (s,"LT",LT)
replace (s,"LU",LU)
...

Pour ce qui est de l'évaluation du résultat : 1 and 0 or (1 and 0) and 0, soit il faut passer par une analyse de la chaine (pas facile) soit tu te sers d'un moteur de bdd comme par exemple :

' dans le menu Projet/References... cocher "Microsoft DAO 3.51 Object Library" ou autre dans le même genre.

Private Sub Form_Load()
Dim db As Database
Dim rs As Recordset
Dim fic As String
Dim question As String

  question = "1 and 0 or (1 and 0) and 0"

  'nom de la base bidon
  fic = App.Path & "\bidon.dat"
 
  'création d'un fichier vide pour simuler une BDD
  Open fic For Output As #1
  Print #1, ""
  Print #1, ""
  Close

  'ouverture de cette fausse BDD
  Set db = OpenDatabase(App.Path, False, True, "Text;")
  'envoi de la requete pour calcul par le moteur de BDD
  Set rs = db.OpenRecordset("SELECT " & question & " FROM truc.dat")
 
  'affichage du résultat
  MsgBox Abs(rs(0))
 
  'on fait le ménage
  Kill fic
  rs.Close
  db.Close
  Set rs = Nothing
  Set db = Nothing
 
End Sub

Si je retrouve mon code d'évaluation de chaine mathématique, je te le poste.

Loup Gris


dimanche 20 mars 2005 à 12:53:51 | Re : Utiliser la calculatrice pour traiter des fonctions binaires

CanisLupus

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

Je n'ai pas retrouvé le code mais je l'ai recréé. Ca donne la petite fonction suivante.
Le seul problème est le type de tes variables LS, LT, ... et le type de résultat que tu veux obtenir.
Il faut savoir que le type Boolean, en VB, c'est VRAI (valeur : -1) ou Faux (valeur 0). Si tu codes LS=1 ou LS=TRUE, en réalité il y aura -1 dedans. Donc, dans ma fonction j'utilise abs() pour supprimer le signe et je renvoie de l'integer. Ainsi, si tes LS,LT,... sont boolean ou integer ça marchera pareil. A toi de savoir comment tu traites le résultat.
dim r as boolean
r=resultat(TaChaine) te renvoie FAUX ou VRAI (0 ou -1)
dim r as integer
r=resultat(TaChaine) te renvoie 0 ou 1

Je suis parti du principe que ta chaine d'origine ne comportait aucune erreur (du genre nb de parenthèses ouvertes et fermées inégal ou autre). La, c'est à toi de voir.

Public Function Resultat(ByVal s As String) As Integer
Dim sResult As String

  'pour la commodité du traitement, suppression de tous les espaces
  sResult = UCase(Replace(s, " ", ""))
 
  'transformation de la chaine
  sResult = Replace(sResult, "LS", Abs(LS))
  sResult = Replace(sResult, "LT", Abs(LT))
  sResult = Replace(sResult, "LU", Abs(LU))
  sResult = Replace(sResult, "LV", Abs(LV))
 
  'évaluation de la chaine, dans l'ordre de priorité
  Do While InStr(sResult, "(") > 0
    'NOT
    sResult = Replace(sResult, "NOT0", "1")
    sResult = Replace(sResult, "NOT1", "0")
    'AND
    sResult = Replace(sResult, "0AND0", "0")
    sResult = Replace(sResult, "0AND1", "0")
    sResult = Replace(sResult, "1AND0", "0")
    sResult = Replace(sResult, "1AND1", "1")
    'OR
    sResult = Replace(sResult, "0OR0", "0")
    sResult = Replace(sResult, "0OR1", "1")
    sResult = Replace(sResult, "1OR0", "1")
    sResult = Replace(sResult, "1OR1", "1")
    'XOR
    sResult = Replace(sResult, "0XOR0", "0")
    sResult = Replace(sResult, "0XOR1", "1")
    sResult = Replace(sResult, "1XOR0", "1")
    sResult = Replace(sResult, "1XOR1", "0")
    'suppression des parenthèses obsolètes
    sResult = Replace(sResult, "(0)", "0")
    sResult = Replace(sResult, "(1)", "1")
  Loop
 
End Function


Loup Gris


dimanche 20 mars 2005 à 17:29:12 | Re : Utiliser la calculatrice pour traiter des fonctions binaires

Daghis

Réponse acceptée !
Loup Gris,

Je te remercie. Je crois avoir compris et tu me me mets sur le bon chemin.

Concernant le type de variable LS, LT etc en fait je les déclare de type byte. Cela me
permet d'avoir 0 pour faux et de 1 à 255 pour vrai.

Je fais mes essais et ne manquerai pas de t'informer le week end prochain

Daghis

samedi 26 mars 2005 à 11:01:35 | Re : Utiliser la calculatrice pour traiter des fonctions binaires

Daghis

Loup Gris,

J'ai fait mes essais et le résultat est parfait. 

J'ai juste ajouté à la ligne :

  'évaluation de la chaine, dans l'ordre de priorité
  Do While InStr(sResult, "(") > 0

la modif suivante :

  'évaluation de la chaine, dans l'ordre de priorité
  Do While InStr(sResult, "(") > 0 or len(sResult)>1

pour avoir en dernier une réponse du type 1 au lieu de 1AND1
Encore merci.

Bonne journée

Daghis




Cette discussion est classé dans : utiliser, traiter, fonctions, calculatrice, binaires


Répondre à ce message

Sujets en rapport avec ce message

Comment utiliser la fonction KeyDown ??? [ par Jeff ] Bonjour... Je me répète mais la réponse que j'ai eu ne fonctionne touours pas... J'avais écrit que je n'étais pas capable d'utiliser la fonction KeyDo problème de gravure help !!! [ par buchwald ] bonjour, je souhaite réaliser un logiciel de gravure via vb qui serait capable de graver tous types de fichiers. Quelqu'un se serait-il déja servi du Aide sur DLL !!!! [ par Hedrock ] J'ai une Dll (accompagnée d'un .exe) que je voudraisutiliser dans un de mes programmes. Seulement, je ne connais pas les paramètres des fonctions de c DLL avec fenetre de dialogue [ par ricky78 ] Bonjour J'essaye pour la premiere fois de mettre des fonctions de mon code dans une DLL. Sur differents tutoriel et aide j'arrive bien a cree et a uti DLL et fenetre de dialogue [ par ricky78 ] Bonjour J'essaye pour la premiere fois de mettre des fonctions de mon code dans une DLL. Sur differents tutoriel et aide j'arrive bien a cree et a uti Utiliser des fonctions excel sous vb [ par mobilotek ] Salut! Savez vous comment utiliser la fonction "linest" (="droitereg"(droite de regression)) sous vb? il doit bien y avoir des API excel, que lon peut utiliser une source du site [ par nememoris ] BonjourJ ai installé VBexpress 2005  aujourd hui, j ai commandé VB2005 pour les nuls et tenté une intiation...J ai telechargé une source et l ai ouver


Nos sponsors

Sondage...

CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.