[Gambas-user] A random sort of listview

jbskaggs jbskaggs at ...1871...
Sun Apr 12 20:34:10 CEST 2009


You were correct! There was a extra comma in the data file that was breaking
the loop!

BTW to you an everyone else if you celebrate it, Happy Easter! If not ignore
me. ;)

JB SKaggs



Simonart Dominique wrote:
> 
> Hi again :)
> 
> May be you did not see the last sentence of my answer wich 
> is written in 3 places? Your code is just fine and I don't 
> have any problem with the ListViews. Of course, I had to 
> initialize the ListView1 with my own data like this:
> 
> FOR i = 0 to 21
>     ListView1.Add(Str(i), "number " & Str(i))
> NEXT
> After that, I run your code and all is fine!
> If you have problem, this is therefore with the content of 
> your Listview1. I think it is not correct to have identical 
> keys in a ListView because if I attempt to do it the program 
> stop immediatly. I even don't understand how you could get 
> this situation! Here is what I tried:
> 
> FOR i = 0 to 21
>     SELECT CASE i
>     CASE 0
>        ListView1.Add("5", "number " & Str(i))
>     CASE 1
>        ListView1.Add("13", "number " & Str(i))
>     CASE ELSE
>        ListView1.Add(Str(i), "number " & Str(i))
>     END SELECT
> NEXT
> this code stop with i=5 and say that the key is already used!
> 
> Could you make a try with unique keys only?
> Plus, could you run it without TRY?
> 
> Hope we could identify the error
> Dominique Simonart
> 
> jbskaggs a écrit :
>> Hi yourself!  Here is the problem in the code:
>> 
>> FOR i = 0 TO ListView1.Count - 1 ' write items in listview2
>> TRY PRINT myArray[i]
>> listview1.MoveTo(myArray[i])
>> TRY c = listview1.Item.Key
>> TRY PRINT myArray[i], "listview1.item.key ", c, " counter i: ", i, "
>> total
>> count: ", listview1.Count
>> TRY listview2.add(c, listview1.item.text) 
>> NEXT 
>> 
>> When the counter i reaches Listview1.Count -1  it gives an error and does
>> not write the last record!   I have compensated by writing an extra 
>> dummy
>> record to the data file- but how do I code this properly to write the
>> whole
>> list?  I have tried several things and they just give different errors.
>> 
>> Thanks
>> 
>> JB
>> 
>> Simonart Dominique wrote:
>>> Hi,
>>>
>>> jbskaggs a écrit :
>>>> Okay I thought this was worked out but its still not working- I always
>>>> end up
>>>> losing the last two list items.
>>>>
>>>> Here is the console output from my print statements:
>>>> This first list is printing i, a from this command SWAP myArray[i],
>>>> myArray[a]
>>>>
>>>> 21      21
>>>> 20      13
>>>> 19      0
>>>> 18      13
>>>> 17      11
>>>> 16      4
>>>> 15      9
>>>> 14      12
>>>> 13      4
>>>> 12      2
>>>> 11      6
>>>> 10      2
>>>> 9       4
>>>> 8       0
>>>> 7       5
>>>> 6       1
>>>> 5       3
>>>> 4       3
>>>> 3       0
>>>> 2       0
>>>> 1       0
>>>> 0       0
>>>>
>>> Here, you listed i and a but the interesting values are i 
>>> and myArray[i] instead
>>>
>>>> This list shows where listview1 is being copied into listview2:
>>>>
>>>> listview1.item.key      21       counter i:     21       total count:  
>>>> 22
>>>> listview1.item.key      13       counter i:     20       total count:  
>>>> 22
>>>> listview1.item.key      13       counter i:     19       total count:  
>>>> 22
>>>> listview1.item.key      20       counter i:     18       total count:  
>>>> 22
>>>> listview1.item.key      11       counter i:     17       total count:  
>>>> 22
>>>> listview1.item.key      4        counter i:     16       total count:  
>>>> 22
>>>> listview1.item.key      9        counter i:     15       total count:  
>>>> 22
>>>> listview1.item.key      12       counter i:     14       total count:  
>>>> 22
>>>> listview1.item.key      16       counter i:     13       total count:  
>>>> 22
>>>> listview1.item.key      2        counter i:     12       total count:  
>>>> 22
>>>> listview1.item.key      6        counter i:     11       total count:  
>>>> 22
>>>> listview1.item.key      14       counter i:     10       total count:  
>>>> 22
>>>> listview1.item.key      18       counter i:     9        total count:  
>>>> 22
>>>> listview1.item.key      19       counter i:     8        total count:  
>>>> 22
>>>> listview1.item.key      5        counter i:     7        total count:  
>>>> 22
>>>> listview1.item.key      5        counter i:     6        total count:  
>>>> 22
>>>> listview1.item.key      3        counter i:     5        total count:  
>>>> 22
>>>> listview1.item.key      7        counter i:     4        total count:  
>>>> 22
>>>> listview1.item.key      8        counter i:     3        total count:  
>>>> 22
>>>> listview1.item.key      15       counter i:     2        total count:  
>>>> 22
>>>> listview1.item.key      10       counter i:     1        total count:  
>>>> 22
>>>> listview1.item.key      17       counter i:     0        total count:  
>>>> 22
>>>>
>>>> here is a screen shot of the two lists: listview1 is on the left, you
>>>> will
>>>> notice that the last two items are not on the random sorted list on the
>>>> right.
>>>>
>>> First, is it correct that you have twice the keys 13 and 5 
>>> in ListView1 and that keys 0 and 1 are missing?
>>> I tried to reproduce exactly your keys sequence but as soon 
>>> as I want to add an identical key, I get a message and the 
>>> programme stop immediatly.
>>>
>>>> http://www.nabble.com/file/p23005690/ScreenshotBug.png 
>>>>
>>>>
>>>> Here is my code:
>>>>
>>>> PUBLIC SUB button4_click()
>>>> DIM myArray AS Integer[ListView1.count]
>>>> DIM a AS Integer
>>>> DIM i AS Integer
>>>> DIM c AS String
>>>>
>>>> FOR i = 0 TO ListView1.count - 1 STEP 1
>>>>  myArray[i] = i 
>>>> NEXT 
>>>>
>>>> FOR i = ListView1.count - 1 TO 0 STEP -1
>>>> a = Int(Rnd(i + 1))
>>>> SWAP myArray[i], myArray[a]
>>>> PRINT i, a
>>>> NEXT 
>>>>
>>>> FOR i = ListView1.count - 1 TO 0 STEP -1 ' write items in listview2
>>>> -<<<<< I
>>>> have also tried running this counting up as well but it changed
>>>> nothing.
>>>>
>>>> listview1.MoveTo(myArray[i])
>>>> TRY c = listview1.Item.Key
>>>> TRY PRINT "listview1.item.key ", c, " counter i: ", i, " total count:
>>>> ",
>>>> listview1.Count
>>>> TRY listview2.add(c, listview1.item.text) 
>>>> NEXT 
>>>> 'fGlobal.show
>>>> 'FRolldice.Show
>>>>
>>>> 'ME.Hide
>>>>
>>>> END
>>>>
>>>>
>>>> Sincerly JB SKaggs
>>>>
>>> I run your code and it works quite fine!
>>> I think your missing items come from the duplicated keys
>>>
>>> Dominique Simonart
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> This SF.net email is sponsored by:
>>> High Quality Requirements in a Collaborative Environment.
>>> Download a free trial of Rational Requirements Composer Now!
>>> http://p.sf.net/sfu/www-ibm-com
>>> _______________________________________________
>>> Gambas-user mailing list
>>> Gambas-user at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>>
>>>
>> 
> 
> 
> 
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by:
> High Quality Requirements in a Collaborative Environment.
> Download a free trial of Rational Requirements Composer Now!
> http://p.sf.net/sfu/www-ibm-com
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
> 
> 

-- 
View this message in context: http://www.nabble.com/A-random-sort-of-listview-tp22919766p23013605.html
Sent from the gambas-user mailing list archive at Nabble.com.





More information about the User mailing list