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

WinDev Discussion :

Windev[10]Récuperer un tableau stocké dans un variant


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Points : 174
    Points
    174
    Par défaut Windev[10]Récuperer un tableau stocké dans un variant
    Bonjour,

    Dans une discution anterieur j'avais évoquer le sujet de la fonction ActiveXEvénement dans laquel j'appel un évenement comme suit:
    ActiveXEvénement("Ma_Pocedure",ActiveX,"EventNewValue")

    L'évenement de cette activex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void EventNewValue(
    Long NbItems
    Variant TabItemName
    Variant Value
    Variant Quality
    Variant TimeStamp
    )
    Hegro m'a proposé de ne pas typer les parametres :
    Ma_Pocedure(NbItems,TabItemName,...) dans ma procedure pour pouvoir exploiter les varibles par la suite.

    Le problème que j'ai maintenant c'est que la variable "Value" contient un tableau de booleens et que je n'arrive pas à récuperer.


    J'ai utilisé la syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TabBool est tableu de 100 booleens
    TabBool=Value
    Info(TabBool[1],TabBool[2],.....TabBool[n])
    Mais j'ai toujours cette erreur "le tableau ne peut pas être utiliser car il n'est pas initailisé"

    J'ai utilisé aussi cette syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TabBool est un Variant
    TabBool=Value
    Info(TabBool[1],TabBool[2],.....TabBool[n])
    L'erreur c'est qu' on ne peut pas écrire Variant[]

    Alors je me dérige vers vous pour m'aider à resoudre ce problème
    Si mon message t'a aidé, un petit ne fera pas de mal
    Pensez aussi à

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    salut,

    Normalement tu dois pouvoir convertir ce variant pour le type qui va bien avec la fonction ConvertiVariant il me semble (regarde l'aide)

    Je pourrais t'en dire plus demain sinon.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  3. #3
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Points : 174
    Points
    174
    Par défaut Re
    Bonjour Hegros,

    Avaec VariantConverti sur windev, on peut convertir que des variables simples et ne pas des complexes. C'est mon cas, car mon variant contient un tableau de boolèens.

    J'ai essayé cette syntaxe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    TabBool est un tableau de 100 boolèens
    TabBool = VariantConverti(Value)
    Mais toujours la même erreur "type incompatible durant l'affectation"

    Alors je ne sais qui faire
    Si mon message t'a aidé, un petit ne fera pas de mal
    Pensez aussi à

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    A mon avis il faut que tu déclares Value en tableau dynamique de 100 booleens

  5. #5
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Points : 174
    Points
    174
    Par défaut RE :kwasin
    MERCI kwasin pour ta reponse,

    Le soucci c'est que Value on ne doit pas le typer car c'est un paramètre de l'événement de l'activex.
    Donc si j utilise ta solution je ne peut plus détecter cette évenement.
    Si mon message t'a aidé, un petit ne fera pas de mal
    Pensez aussi à

  6. #6
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Points : 174
    Points
    174
    Par défaut
    Je n'arrive tjr pas à récuperer ce tableu dans le variant.
    D'apprés la documentation (Ci-joint)

    Value est un Variant de type tableau de Variants.
    Pour pouvoir récupérer des variables simples stockées dans "Value",il n'y a pas de problème, mais qand il s'agit d'un tableau , c'est là ou ça se complique
    Voilà un morceau du code exact que j'utilse, sachant que je connais à l'avance les valeurs des variables que je doit lire (Forçage dans l'automate)

    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
     
    PROCEDURE Surveillance(NbItems,TabItemName,Value,Quality,TimeStamp)
    Tab_Def  est un entier
    AffichOK est un booléen
    pos est un tableau de 2 entiers sur 1 octet
    vTab_Def0 est un tableau de 64 variants
    index est un entier
     
     
    POUR index=1 A NbItems
     
        SELON TabItemName[index]
     
    	CAS "OPC.Infos.Bit_ResultOK" : AffichOK=Value[index]  // Récuperation                     
                                                                                         Sans problème
     
            CAS "OPC.PositionVar.Pos_PFAIBLE": pos[1]=Value[index]//Récuperation                     
                                                                                         Sans problème
     
    	CAS "OPC.PositionVar.Pos_PFORT": pos[2]=Value[index] // Récuperation                     
                                                                                         Sans problème
     
            CAS  "OPC.Defauts.essai" :
     
    		SI Value[index]<>Null ALORS //Récuperation  Impossible                                                                                             
    		Tab_Def=Value[index]
    		Info(VariantConvertit(Tab_Def0[1],Tab_Def0[2],Tab_Def0[3])
    		FIN
        FIN
     
    FIN
    Alors aider moi svp ,,, je ne sais plus ou je suis
    Fichiers attachés Fichiers attachés
    Si mon message t'a aidé, un petit ne fera pas de mal
    Pensez aussi à

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Salut,

    Je ne peux pas lire ton document pas de word Tu peux le mettre au format RTF ?


    Sinonn tu peux aussi montrer comment tu charges ta configuration et comment tu initialises ton activeX


    Nota :

    En windev on ne peut pas typer les paramètres de type tableau (faire F1)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PROCEDURE MaFonction(PListeClient est un tableau de 10 chaine) //ne compile pas
    PROCEDURE MaFonction(PListeClient est un tableau dynamique) //ne compile pas
    auquel cas on utilisera typevar qui permet d'identifier le type de paramètre
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  8. #8
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Quel est le message d'erreur que tu as aujourd'hui ?

    Je viens de regarder et en fait je recopie comme cela les valeurs du tableau Value

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELON ExtraitChaîne(TabItemName[i],5,".")
       CAS Majuscule("In_yvrempr1_ouv") : table_entreesTOR[1]=Value[i]
    table_entreesTOR est un tableau de booleen

    Il faut que tu regardes aussi la quality du message <192 c'est pas bon(voir la doc)
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  9. #9
    Membre habitué
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Points : 174
    Points
    174
    Par défaut Re : hegros
    Merci hegros pour tes efforts.
    Ces lignes de code je les utilise déja pour récuperer la valeur d'une seule entrée TOR par exemple. Mais il y le cas ou J'ai 300 entrées TOR et cela ça va faire boucoup de lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    SELON ExtraitChaîne(TabItemName[i],5,".")
    
       CAS "Entrée1" : table_entreesTOR[1]=Value[i]
       CAS "Entrée2" : table_entreesTOR[2]=Value[i]
       CAS "Entrée3" : table_entreesTOR[3]=Value[i]
          ........
       CAS "Entrée300" : table_entreesTOR[300]=Value[i] // ça fait bcp
    Alors les gens d'Applicom ont mis en place une déclaration d'un tableau de booléens dans l'activex qui une seule variabe genre EntréesTor_x_n:

    EntréesTor_x_n : (VT_ARRAY|VT_Bool) sera stocké dans l'un des Value[i].
    x : adresse de la première entrée à lire
    n : nombre des entrées à lire

    Je m' explique : Value[i] = {EntréesTor_1, EntréesTor_2,....EntréesTor_300}.

    En visual basic on peut écrire sans problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    Dim table_entreesTOR  As Variant
    Dim Tabrécup(1 to 300)  As bool
     
        table_entreesTOR = Value[i]
     
        For i = 1 To 300
             Tabrécup(i) = table_entreesTOR(i)
        Next i
    Mais cette syntaxe ne marche pas en windev??????
    Si mon message t'a aidé, un petit ne fera pas de mal
    Pensez aussi à

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2006
    Messages : 205
    Points : 186
    Points
    186
    Par défaut
    Tu as regarder si dans ton champ activeX tu avais bien parametré ton activeX grace a propriété ??
    Si tu veut de l'aide, j'ai deja gérer un activeX pour etre en relation avec une badgeuse et en récupéré des infos.
    RoUtMoUt DeVeLoPPeUr WINDEV FOU !!!!!!

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    205
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2006
    Messages : 205
    Points : 186
    Points
    186
    Par défaut
    Je n'arrive pas a voir ton document word.
    Ton activeX coporte des descriptions et fonctions
    Donc dans ta procédure du doit faire appel a ton champActiveX que tu as préalablement déclaré

    exemple:
    Mon_activeX>>[description][(paramètre)]
    //Il suffit d'utiliser la syntaxe Automation du W-Langage

    Il devrait a se moment la te retourner une ou plusieurs valeur que tu pourrai inserer dans ton tabelau
    RoUtMoUt DeVeLoPPeUr WINDEV FOU !!!!!!

Discussions similaires

  1. Tableau stocké dans un fichier
    Par ahoff dans le forum C++
    Réponses: 5
    Dernier message: 10/08/2013, 18h41
  2. Piste de travail pour lire un tableau stocké dans un PDF
    Par katanaenmousse dans le forum Qt
    Réponses: 4
    Dernier message: 19/05/2010, 22h49
  3. Réponses: 6
    Dernier message: 30/09/2006, 15h14
  4. Réponses: 4
    Dernier message: 11/07/2006, 22h58
  5. Réponses: 10
    Dernier message: 06/07/2006, 21h57

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