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

VB.NET Discussion :

Convertir un STRING en BOOLEAN dans un test


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Convertir un STRING en BOOLEAN dans un test
    Bonjour, je voudrai effectuer un IF CONDITION THEN..... sachant que CONDITION est prédéfinie comme un STRING alors qu on devrait avoir un BOOLEAN, comment activer cette modification ?
    Voici un code simplifié afin de mieux comprendre mon problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Dim condition As String = "a=1"
     Dim a As Integer = 1
     
     If condition Then MsgBox("vrai")
    Je vous remercie

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    14 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 14 107
    Points : 24 974
    Points
    24 974
    Par défaut
    quelle est la forme possible pour cette condition ?
    est-ce que c'est toujours a ?
    est-ce que c'est toujours = ?
    et toujours ensuite une valeur ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    En fait j ai une liste de conditions enregistrées dans un tableau que j aimerais pouvoir chercher et utiliser à ma guise
    condi[0] = "a=1"
    condi[1] = "b>c"
    condi[2] = "c mod 2 = 0"...

    puis faire un test en fonction des valeurs a, b, c :

    if condi[k] then ...

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    14 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 14 107
    Points : 24 974
    Points
    24 974
    Par défaut
    soit tu parses et tu créés un func en fonction
    soit il faut que ca soit du code vb et tu le compiles à la volée (string => fonction utilisable) via vbcodeprovider (il faudra passer a b et c en paramètre pour être sur de couvrir toutes les variables possibles)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta réponse, je pensais qu il y aurait un moyen plus rapide d y arriver... je vais devoir m y mettre sérieusement !

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    avril 2007
    Messages
    14 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : avril 2007
    Messages : 14 107
    Points : 24 974
    Points
    24 974
    Par défaut
    de mémoire il y a d'autres moyens détournés, si tu as une base sql pas loin tu peux tenter de rajouter select devant, de modifier deux ou trois trucs et de faire exécuter la requête, le parseur est inclus ^^
    sans base, je crois qu'on peut aussi faire ca sur l'objet datatable ou dataset, mais je ne sais plus comment
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre chevronné Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    juin 2019
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : juin 2019
    Messages : 1 307
    Points : 2 022
    Points
    2 022
    Par défaut
    Bonsoir,
    et un truc comme ça?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     Sub test()
            Dim prm() As OleDbParameter = {New OleDbParameter}
            With prm(0)
                .Value = 1 : .Size = 8 : .DbType = DbType.Int16
            End With
            MessageBox.Show($"a=1 : {If(OpenFtxt("?=1", prm)(0)(0), "Vrai", "Faux")}") '"a=1"
            prm = {New OleDbParameter, New OleDbParameter}
            With prm(0)
                .Value = 3 : .Size = 8 : .DbType = DbType.Int16
            End With
            With prm(1)
                .Value = 3 : .Size = 8 : .DbType = DbType.Int16
            End With
            MessageBox.Show($"b>c : {If(OpenFtxt("?>?", prm)(0)(0), "Vrai", "Faux")}")  ' "b>c"
            prm = {New OleDbParameter}
            With prm(0)
                .Value = 6 : .Size = 8 : .DbType = DbType.Int16
            End With
            MessageBox.Show($"c mod 2 = 0 : {If(OpenFtxt("? mod 2 = 0", prm)(0)(0), "Vrai", "Faux")}") '"c mod 2 = 0"
        End Sub
        Private Function OpenFtxt(ByVal SQL As String, PRM() As OleDbParameter) As DataTable '
            If SQL.ToUpper.IndexOf("SELECT ") = True Then SQL = "Select " + SQL
     
     
            Dim dt As New DataTable 'on déclare le datatable qui va contenire le résulta de la requête
            Using cn As New OleDbConnection
                cn.ConnectionString = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={Application.StartupPath};Extended Properties='text;HDR=No;FMT=Delimited';"
                cn.Open()
                Using cm As New OleDbCommand
                    cm.Connection = cn
                    cm.CommandText = SQL
                    For Each P As OleDbParameter In PRM
                        cm.Parameters.Add(P)
                    Next
                    dt.Load(cm.ExecuteReader)
                    Return dt
                End Using
            End Using
        End Function

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    janvier 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : janvier 2013
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Hum, je dois avouer que je ne comprends absolument rien à ton code, c est bien au delà de mes capacités, mais merci d'avoir répondu... Je pensais qu il y avait une manière simple de transformer une expression texte en condition.
    Sinon j ai trouvé une solution avec des modulo, ça me permet d'activer les tests les un après les autres, ça fait un paquet de lignes mais ça reste compréhensible à mon niveau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     t4 = (k - t1 - 3 * t2 - 9 * t3) / 27 Mod 3
     If t4 = 0 And b < c Then ...
     If t4 = 1 And b = c Then ...
     If t4 = 2 And b > c Then ...

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : février 2006
    Messages : 505
    Points : 293
    Points
    293
    Par défaut ça pourrait débuter comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Cond() As String = {"A=1", "B>C", "c mod 2 = 0"}
     
            For yCond As Integer = 0 To Cond.Count - 1
     
                If Cond(yCond).Contains("="c) Then
                    'Recherche les valeurs numériques dans cette condition
                ElseIf Cond(yCond).Contains(">"c) Then
                    'Recherche les valeurs numériques dans cette condition
                ElseIf Cond(yCond).Contains("mod") Then
                    'Recherche les valeurs numériques dans cette condition
                End If
     
            Next
    ensuite il y a un merveilleux tuto https://plasserre.developpez.com/cours/vb-net/

    pour t'aider à rechercher les valeurs numériques dans un string

  10. #10
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    octobre 2006
    Messages
    669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : octobre 2006
    Messages : 669
    Points : 957
    Points
    957
    Par défaut
    Bonjour,

    Le mieux je pense est d'utiliser un outil pour parser l'expression. Il existe Mx Parser qui devrait te convenir : https://mathparser.org/
    Çà oblige à installer le package Nuget, mais une fois fait ce sera simple d'utilisation.
    Sinon j'avais déjà vu une ruse à base de DataTable, mais elle est assez gourmande en CPU si tu as de nombreuses expression à évaluer. Voici la page où je l'avais vue : https://stackoverflow.com/questions/...tring-using-vb
    Sur cette page tu trouveras aussi l'exemple avec Mx Parser, c'est là que je l'avais trouvé pour mon usage perso.

Discussions similaires

  1. Convertir une string lisible dans une URL
    Par delta07 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/07/2016, 13h51
  2. Convertir une string en boolean
    Par Fabinout dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 14/05/2010, 15h15
  3. convertir string en boolean
    Par kohsaka dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 11/01/2010, 09h25
  4. Test sur BOOLEAN dans une colonne de SELECT
    Par genamiga dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/11/2009, 18h29
  5. Comment convertir une string en boolean ?
    Par olivier12345600 dans le forum Langage
    Réponses: 6
    Dernier message: 25/06/2005, 15h54

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