[Gambas-user] Collections

Pino Zollo pinozollo at ...626...
Sat Jan 16 11:23:00 CET 2010


Il venerdì 15 gennaio 2010 17:39:14 hai scritto:
> Am Freitag, den 15.01.2010, 16:04 -0300 schrieb Pino Zollo:
> > DIM Dict AS NEW Collection
> > DIM Element AS String
> >
> > Dict["Blue"] = 3
> > Dict["Red"] = 1
> > Dict["Green"] = 2
> >
> > FOR EACH Element IN Dict
> >   PRINT Element;
> > NEXT
>
> Salut,
>
> did you ever more then run that code ? debug ? or looked whats a
> Collection ?
>
> OK, "Blue","Red" and "Green" are the KEY for the Collection Element,
> and so they declared and asigned.
>
> try that!
>
> PUBLIC SUB Main()
>    DIM Dict AS NEW Collection
>    DIM Element AS String
>
>    Dict["Blue"] = 3
>    Dict["Red"] = 1
>    Dict["Green"] = 2
>
>    FOR EACH Element IN Dict
>      PRINT Element
>      PRINT Dict.Key
>    NEXT
> END

Thanks Charlie,
I was trying to understand Collections better as I have a wrong behaviour in the following piece of code 
when I use an array of two strings as element; the key is an unique string.

The two print statements print exactly the same thing...the Lista.key is correct and all different, but the 
other ( ; Element[1];; "   ";; Element[0] ) print always the last element added to the structure.

If instead of using an Array[2] I use a single String joining the two strings into a single one, then all works 
perfectly....

...so I guess that there is a bug in how Structure handles Variant elements.

Just another example of my bad luck !
....or maybe I do not understand something.

Best regards

Pino
---------------------------------------------
DO WHILE i < MyArray.Count
            myStruc = MyArray.Pop()
            a = 0
              DO WHILE a < myStruc.Count
      '           DEBUG myStruc.Key(a);; myStruc.Value(a)  ' myStruc.dataType(a)
                Disp.DisRes.Text = Disp.DisRes.Text & myStruc.Key(a) & ": " & myStruc.Value(a) 
                WAIT 
                 Disp.DisRes.Pos = Len(Disp.DisRes.Text)
                 Disp.DisRes.EnsureVisible()
                INC a
              LOOP 
              Parti[0] = myStruc.Value(0)
              Parti[1] = myStruc.Value(2)
'               DEBUG Parti[0];; Parti[1];; myStruc.Value(1)
'               Lista.Add(Parti, myStruc.Value(1))    ' acts same as the following
              Lista[myStruc.Value(1)] = Parti
              DEBUG Lista.Count;; Lista[myStruc.Value(1)][1];; "   ";; Lista[myStruc.Value(1)][0] 
              Disp.DisRes.Text = Disp.DisRes.Text & "~~~~~~~~~"
            INC i
         LOOP 
         ' CBCommand.Clear
         ' CBComm2.Clear
         FOR EACH Element IN Lista 
              
              PRINT Lista.Key;; "   ";; Lista[Lista.key][1];; "   ";; Lista[Lista.key][0] 
              PRINT Lista.Key;; "   ";; Element[1];; "   ";; Element[0]

              ' SELECT CASE Element[1]
              '    CASE "n:s"
              '      CBCommand.Add(Lista.Key)
              '    CASE "s:n"
              '      CBComm2.Add(Lista.Key)
              ' END SELECT 
         NEXT  
-----------------------------------------------------

-- 
Key ID: 0xF6768208 
Key fingerprint = B16D 0A7C 5B29 A334 CE6A  71F6 EAF8 3D88 F676 8208
Key server: hkp://wwwkeys.eu.pgp.net




More information about the User mailing list