[Gambas-user] sort multidimensional arrays
Benoît Minisini
gambas at ...1...
Mon Oct 26 13:51:26 CET 2009
> Is there a way to sort an array that has more than one dimension by telling
> Gambas on which field the sorting shoiuld be done?
>
> For example, if I have the array
> Max, 14
> Anna, 8
> Fabien, 7
>
> I would expect the result of sorting by the first field to be
> Anna, 8
> Fabien, 7
> Max, 14
>
> Instead, when using Array.Sort, I get
> 7, 8
> 14, Anna
> Fabien, Max
>
> which is useless.
>
> I have a workaround now, reading the array into a single-dimensioned array
> like Max~14
> Anna~8
> Fabien~7
>
> and then sort it, which produces
> Anna~8
> Fabien~7
> Max~14
>
> and then split and read everything back to the original array:
> Anna, 8
> Fabien, 7
> Max, 14
>
> But that just works, it's not really elegant.
> Somebody knows a better way?
>
> Thanks
> Matti
>
Not really. The array Sort() method is very simple, as it sorts the contents
of the array linearly, whatever the number of dimensions is.
A workaround is using a Object[], and storing each line of your table inside
by using a dedicated class, or another array.
Sorting an Object[] calls the "_compare" public method on each object. This
way you can sort the array the way you want. Look at the documenation of
Object[].Sort() in the wiki for more details.
In Gambas 3, you don't have to use an Object[], you can use a Variant[][]
instead.
Regards,
--
Benoît Minisini
More information about the User
mailing list