[Gambas-user] A random sort of listview

jbskaggs jbskaggs at ...1871...
Sun Apr 12 08:25:39 CEST 2009


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
> 
> 

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





More information about the User mailing list