IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Vérifier une expression logique


Sujet :

Langage Delphi

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut Vérifier une expression logique
    Bonjour à tous,
    Dans mon programme, j'ai un champs dans lequel l'utilisateur doit entrer une expression logique du type : "operande" + "operateur" + "operande"
    "operande" pouvant être :
    une lettre ou "(NOT lettre)" ou une équation logique commençant par une "(" et finissant par une ")"

    "operateur" peut être : AND, OR, NOR

    Au départ j'avais écris une fonction récursive qui controlait une chaine de type "A AND NOT B OR C" mais finalement je dois gérer des chaines de type : "(A AND (NOT B)) OR (C AND D)"
    Mais je ne sais pas comment m'y prendre avec les parenthèses pour controler que l'expression entrée est conforme.

    Y a t il des algo types pour vérifier que la chaine entrée est bien formée?

    Merci

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 982
    Par défaut
    Il y a un sujet similaire qui a été discuté sur le forum, si je le retrouve, je le donnerais le lien ...

    Sinon, déjà il te faut un parseur, tu peux découper chaque élément dans un arbre (arbre - récursivité, de bon amis), une "(" provoque l'ouverture d'un sous niveau, et le ")" provoque sa fermerture, ainsi de suite, mais cela devient vite compliqué car faut gérer la prioriété des calculs ... des algos tout fait sur l'interprétation d'une formule Arithmétique cela doit exister ... peut-être pas en delphi ...

    Je l'avais tenté moi aussi, il y a longtemps, mais j'avais quelques erreurs ...

    sinon, si ton application est lié à une Base de données, tu peux tricher, en MySQL par Exemple tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ((1 + 1) * 2 + 4) / 5 as RESULTAT
    sinon tu fais une formule à la Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OR(AND(A, NOT(B)) ,AND(C, D))
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut
    Merci de ta reponse, si tu retrouves le sujet ca m intereese, les differents exemples que j'ai pu trouver ont pour but de realiser des calculs.

    Dans mon cas: je n'ai pas de base de donnée, la syntaxe (je veux dire par la l enchainement des operandes et operateurs) est imposée.
    cela devient vite compliqué car faut gérer la prioriété des calculs
    En effet, je me casses la tete sur ce probleme de priorité avec les operateurs et les parentheses.

    Pour ce qui est des arbres je n'en ai jamais utilisé pour le moment et je suis censé trouver une solution d ici demain midi. Je vais y jeter un oeil dessuite.
    Je l'avais tenté moi aussi, il y a longtemps, mais j'avais quelques erreurs ...
    ca me rassure

Discussions similaires

  1. Traduire une expression logique en comportement de bouton
    Par mamax29 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 20/10/2011, 09h06
  2. [RegEx] Vérifier une expression correspond à une autre
    Par gazelle dans le forum Langage
    Réponses: 2
    Dernier message: 01/02/2009, 10h22
  3. Vérifier une expression rationnelle
    Par senacle dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/01/2008, 16h35
  4. Réponses: 17
    Dernier message: 02/08/2006, 15h32
  5. Réponses: 10
    Dernier message: 18/11/2004, 23h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo