Aller au contenu

stocker un tableau dans variables QA


Messages recommandés

Posté(e)

Hello !

 

J'aimerais savoir si on peut (et comme le faire) pour stocker un tableau "indexé" dans une variable QA :

 

par exemple :
 

{
  [clé 1] = "toto"
  [clé 2] = "lulu"
}

J'arrive à stocker des tableaux classiques {..., ..., ...}

Mais pas ceux-là... :(

 

Le but étant après récupération avec le json.decode() de pouvoir faire un simple MaTable[MaClé]...

 

merci pour votre aide...

Posté(e)

voila comment j'ai fais pour un QA

 

contenu de ma variable QA

"home Center 2","00:10:4d:fa:a5:cd","192.168.100.44"

pour le récupérer en tableau

self.DeviceName = {} -- table Nom des devices + numero des label
    self.macList = {} -- table des adresses Mac
    local j = 0
    for i = 1, 6 do
        self:updateView("label"..i, "text", "  ")
        local device = "["..self:getVariable("Device "..i).."]"
        device = json.decode(device)
        if #device == 2 or #device == 3 then
           if (device[2]) then -- si mac différent de nil
           j = j + 1
           device[2] = string.lower(device[2])
              -- verification de l'adresse mac + est ajout aux table si mac Ok
              if string.match(device[2], '^[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]:[0-9a-f][0-9a-f]$') == nil or string.len(device[2]) ~= 17 then
                 self:warning("onInit(): ", device[2], " est une adresse MAC incorrecte")
                 self:updateView("label"..j, "text", "Erreur Mac Adresse device "..i)
              else -- si mac OK ajout aux tables self.DeviceName et self.macList
                 self:trace(i," Mac : ", device[2]," - Nom : ",device[1])
                 self.DeviceName[j] = {device[1], i}
                 self.macList[j] = device[2]
                 self:updateView("label"..j, "text", device[1].." - Mac : "..device[2])
              end
           end
        end
    end

 

Posté(e)

mouais c'est pas mon cas....

 

Moi j'aurai aimé avoir comme contenu dans cette variable QA (qu'on s'entende bien, quand je dis variable QA, je parle de variables visibles dans l'onglet "variable" du QA)

{[ID1]=toto,[ID2]=lulu}

ça m'éviterait d'avoir à parcourir toute la table pour trouver ma valeur.

J'appelle ID1 et j'ai directe "toto"

Comme on fait normalement avec un tableau indexé !

Mais là je souhaite le ranger dans une variable...

Posté(e)

Ben ça marche un tableau dans une variable de QA :

local tableau = {
    [1] = "un",
    [2] = "deux",
    [3] = "trois",
}

self:setVariable("tableau", tableau);
local tab = self:getVariable("tableau");
self:trace("type(tab)=", type(tab), ", tab[2]=", tab[2]);

ou pour avoir quelque chose de lisible, on emploie le format json :

local tableau = {
    [1] = "un",
    [2] = "deux",
    [3] = "trois",
}

self:setVariable("tableau", json.encode(tableau));
local tab = json.decode(self:getVariable("tableau"));
self:trace("type(tab)=", type(tab), ", tab[2]=", tab[2]);

 

  • Like 1
Posté(e)

ben !!!

mais qu'est ce que j'ai foutu alors ?!

 

dans l'ordre, j'ai créé la variable QA avec juste ça : "{}"

ensuite je la récupère avec 

local MaVar = json.decode(selg:getVariable("MaVarQA"))

ensuite j'ajoute une valeur :

MaVar[8]="toto"

ensuite je mémorise :

self:setVariable("MaVarQA", json.encode(MaVar))

et quand je regarde la contenu de la variable j'ai :

{"8"="toto"}

 

quand après je relis la variable suivant la même méthode :

MaVar[8]

il me renvoi nil ???

Posté(e)

@Barelle : ça passe avec les tostring() ou les ""

Je sais pas ce que j'ai foutu.

 

par contre il faut bien initialiser la variable avec "{}" et non "[]" dans l'onglet du QA.

 

et visiblement les clé sont d'office des string et non des number.

Après il est vrai que les variables QA sont un peu spéciales, tout est chaine de caractères...

 

merci !!

×
×
  • Créer...