1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WD Texter l'existence d'une variable.

Discussion dans 'Windev' créé par LAPIPE2018, Août 14, 2018.

  1. LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    648
    J'aime reçus:
    227
    Bonsoir,
    J'ai ce code ce cdoe
    [windev]POUR i=1 À 40
    {"tb"+i}=PRODUIT.Tb


    FIN[/windev]

    Comme la variable champexiste, j'aimerais tester l'existence de {"tb"+i}, par exempl, tb1 à tb10,
    comment le faite vous ?
     
    Tags:
  2. joker

    joker New Member
    MEMBRE WX

    Inscrit:
    Jan 30, 2018
    Messages:
    0
    J'aime reçus:
    13

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonsoir,
    J'ai ce code ce cdoe
    [windev]POUR i=1 À 40
    {"tb"+i}=PRODUIT.Tb


    FIN[/windev]

    Comme la variable champexiste, j'aimerais tester l'existence de {"tb"+i}, par exempl, tb1 à tb10,
    comment le faite vous ?
    Cliquez pour agrandir...
    :)

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Pour info, les { } sont des opérateurs d'indirection :
    Les opérateurs { et } permettent d'accéder à un champ, une variable, un membre d'une classe ou une rubrique de fichier en construisant dynamiquement le nom du champ, de la variable, du membre de la classe ou de la rubrique.

    L'intérêt des opérateurs { et } est multiple :
    Passer en paramètre un nom de champ, de variable, de membre d'une classe ou de rubrique.
    Construire le nom d'un champ, de la variable, d'un membre d'une classe ou d'une rubrique par programme.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    PS : je 'ai jamais réussi à m'en servir
     
  • WX1331

    WX1331 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 1, 2018
    Messages:
    610
    J'aime reçus:
    670
    Salut tLM

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    moi aussi j'ai ce problème avec les volets d'un onglet

    salutations
     
  • redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    pour les volet :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    et les champs

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • suenodesign

    suenodesign Well-Known Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    507
    J'aime reçus:
    732
    Je vous avoue que je n'arrive pas à bien saisir le problème ou du moins comprendre sa formulation

    mais puisque vous parlez d'indirection je vous dis mon expérience.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Comme la variable champexiste, j'aimerais tester l'existence de {"tb"+i}, par exempl, tb1 à tb10,
    Cliquez pour agrandir...
    LAPIPE2018 voudrait vérifier l'existence des variables : tb1,tb2,tb3,...tb10

    en WLangage on peut vérifier l’existence d'un champ avec la fonction ChampExiste
    Code (Text):
    // Test de l'existence du champ "SaisieNom"
    ResExiste = ChampExiste("SaisieNom")
    mais pour les variables l'indirection permet d'économiser le nombre de lignes à écrire en offrant une écriture raccourcie.

    Je m'explique :

    Je déclare 10 variable de nom presque symétrique
    Code (Text):
    mcpt_01_index est un monétaire
    mcpt_02_index est un monétaire
    mcpt_03_index est un monétaire
    mcpt_04_index est un monétaire
    mcpt_05_index est un monétaire
    mcpt_06_index est un monétaire
    mcpt_07_index est un monétaire
    mcpt_08_index est un monétaire
    mcpt_09_index est un monétaire
    mcpt_10_index est un monétaire

    Pour la boucle
    Code (Text):
    nNbr_Max est un entier sur 2 octets=10

    POUR i=1 _À_ nNbr_Max
          {"mcpt_"+NumériqueVersChaîne(i,"02d")+"_index",indVariable}=SrcData_Pompes_Carb.pmp_compteur
    FIN
    Le nNbr_Max ne doit pas excéder le nombre de variables déclarées préalablement sinon erreur Fatale
     
    #5 suenodesign, Août 14, 2018
    Dernière édition: Août 14, 2018
    joker apprécie ceci.
  • suenodesign

    suenodesign Well-Known Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    507
    J'aime reçus:
    732
    Voici un truc tiré par les cheveux x'D
    Je n'ai pas testé mais vous n'allez rien perdre à le faire.
    Tu peux déjouer le problème en ayant recours au tableaux associatifs
    Regarde ce code (tiré de l'aide de WD)
    Code (Text):
    // Tableau associatif d'entiers
    // indexé sur des chaînes et avec doublons
    taIDParClient est un tableau associatif d'entiers
    // Ajout de l'identifiant du client "A"
    taIDParClient["A"] = 55
    // Ajout de l'identifiant du client "B"
    taIDParClient["B"] = 321

    SI taIDParClient["A"]..Existe = Vrai ALORS
    Info("Il existe au moins un élément A")
    FIN
    Code (Text):

    // Déclaration des variables
    mcpt_01_index est un monétaire=0
    mcpt_02_index est un monétaire=0
    mcpt_03_index est un monétaire=0
    mcpt_04_index est un monétaire=0
    mcpt_05_index est un monétaire=0
    mcpt_06_index est un monétaire=0
    mcpt_07_index est un monétaire=0
    mcpt_08_index est un monétaire=0
    mcpt_09_index est un monétaire=0
    mcpt_10_index est un monétaire=0

    // Remplissage du tableau de varaiables
    taVars est un tableau associatif de monétaires
    nNbr_Max est un entier=10
    POUR i=1 _À_ nNbr_Max
        taVars["mcpt_"+NumériqueVersChaîne(i,"02d")+"_index"] = {"mcpt_"+NumériqueVersChaîne(i,"02d")+"_index",indVariable}
    FIN

    // Parcours des éléments du tableau
    //sKey est une chaîne
    //mValue est un monétaire
    //POUR TOUT ELEMENT mValue,sKey DE taVars
    //    Trace(ChaîneConstruit("%1 : %2", sKey, mValue))
    //FIN

    ii est un entier=9 // Ex : On va vérifier si la variable numéro 9 existe.

    // Vérification de l'existence de la variable
    SI taVars["mcpt_"+NumériqueVersChaîne(ii,"02d")+"_index"]..Existe = Vrai ALORS
        Info("La variable ["+"mcpt_"+NumériqueVersChaîne(ii,"02d")+"_index"+"]"+" existe.")
    SINON
        Info("La variable ["+"mcpt_"+NumériqueVersChaîne(ii,"02d")+"_index"+"]"+" n'existe pas.")
    FIN
     
     
    #6 suenodesign, Août 14, 2018
    Dernière édition par un modérateur: Août 15, 2018
    Ezekiel056 et joker aiment ça.
  • Kelard

    Kelard Active Member
    MEMBRE WX

    Inscrit:
    Avr 6, 2018
    Messages:
    103
    J'aime reçus:
    134
    Qu'est ce que tb? Un variant? Si c'est le cas :

    Code (Windev):


    POUR i=1 À 40
         si pas {"tb"+i}..existe continue

         {"tb"+i}=PRODUIT.Tb
    FIN
     
    Pour plus d'info :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    irobot, Gemini1961 et joker aiment ça.
  • LAPIPE2018

    LAPIPE2018 Active Member
    MEMBRE WX

    Inscrit:
    Fev 17, 2018
    Messages:
    648
    J'aime reçus:
    227

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Qu'est ce que tb? Un variant? Si c'est le cas :

    Code (Windev):


    POUR i=1 À 40
         si pas {"tb"+i}..existe continue

         {"tb"+i}=PRODUIT.Tb
    FIN
     
    Pour plus d'info :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Cliquez pour agrandir...
    Merci Kelard.
    On put utiliser le variant pour tester l'existence et transférer.
     
  • Partager cette page

    Chargement...