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

C# Discussion :

[c#] Évaluation d'une string


Sujet :

C#

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Par défaut [c#] Évaluation d'une string
    Voila je cherche une facon de résoudre un petit problème

    j'ai une formule a utilisé dans stocké dans une base de donnée dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String une formule = "[TotalFacture]+([TotalFacture]*[TPS])+(([TotalFacture]+([TotalFacture]*[TPS]))*[TVQ])";
    mon but est de remplacé toute les valeurs entre les [...] ce qui n'est pas dur a faire. Mais apres je voudrai effecter ce calcul directement sans trop me casser la tete avec le parsing, J'imagine que je suis pas le seul au monde a avoir ce probleme.


    Est-ce que quelqu'un a une petite idée ?


    Merci

  2. #2
    Membre émérite Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Par défaut Re: [c#] Évaluation d'une string
    Citation Envoyé par royrremi
    j'ai une formule a utilisé dans stocké dans une base de donnée dans le genre
    pas compris

  3. #3
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    effectivement tout comme zeavan je suis dubitatif :

    veux-tu parler de ceci :
    Propriété DataColumn.Expression

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Par défaut
    pour résumé rapidement je veux faire l'évaluation d'une string. Je voulais savoir si il existe un parser dans .net ...

  5. #5
    Membre confirmé Avatar de Piet
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Par défaut
    jamais vu ça, à ta place, je ferais le parser moi-même.
    ça ne doit pas être bien compliqué.
    Utilise un code de calcul d'une calculatrice polonaise (notation inversée) et fais des "remplace" de tes noms de variables.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    En fait il existe une sorte de parser en .Net, puisque tu peux acceder directement au compilateur. Autrement dit dans ton programme tu peux compiler du code (C#, VB.Net) et l'exécuter. Je n'ai jamais eu l'occasion d'essayer ça moi même et ça semble etre un peu de la grosse artillerie pour pas grand chose, mais ça peut marcher : tu remplaces dans ta chaine les "variables" par leur valeur, et tu fais exécuter ça au compilateur C#...

    Par contre avec le framework 1.1 j'ai entendu dire qu'il y avait une sorte de bug, puisque les assembly générées dynamiquement avec cette méthode ne peuvent pas etre déchargées de l'appDomain, et donc tu as un équivalent à un memory leak. Solution : créer et charger ces assemblies dynamiques dans un autre appDomain que lui tu peux décharger.

    Les classes dont tu auras besoin se trouvent dans System.Runtime.CompilerServices.

    Cela dit si tu recuperes tes données dans une table et que ta formule fait intervenir les colonnes de ta table, alors tu as la solution que propose neguib : les colonnes calculées. C'est déja moins la grosse artillerie que la compilation dynamique

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Par défaut
    J'ai trouvé un petit parser sur du code gratuit il fait tres bien la job!

  8. #8
    Membre expérimenté Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Par défaut
    merci de bien vouloir partager ta trouvaille, c'est la moindre des choses...

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 85
    Par défaut
    bien sur !

    voila

    http://www.lundin.info/mathparser.asp

    il m'a l'air complet !
    voici la liste de ce qu'il fait !

    Operators:

    +, -, *, /, ^, %


    Functions:

    sqrt, sin, cos, tan, atan, acos, asin,
    acotan, exp, ln, 10log, fac, sinh, cosh,
    tanh, abs, ceil, floor, sfac, round, fpart

    Logical:

    !, ==, !=, ||, &&, >, < , >=, <=,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/05/2012, 12h22
  2. [DOM] parser une String pour en faire un document XML
    Par Fladnag dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 29/03/2004, 11h04
  3. [Débutant][JSP] Ajout des caractères à une String...
    Par Henkyl dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 04/03/2004, 16h30
  4. [Syntaxe] mettre des ' dans une string ?
    Par souch dans le forum Débuter
    Réponses: 4
    Dernier message: 14/08/2003, 16h26
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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