Hi Benoit, when we wanted to sort a 2d array (table) by a specific column, variable at runtime, we did the following:
1. Create the class, let's call it "Record", to represent the table records which implements a _compare() method and has a SortField property which indicates to _compare() which column we want to sort by. 2. Create a class "RecordGroup" which Inherits Object[] and has a SortField(Field As Integer, Optional Mode As Integer) method which is a multicolumn-aware version of Sort: Public Sub SortField(Field As Integer, Optional Mode As Integer) Dim iInd As Integer For iInd = 0 To Super.Count - 1 Super[iInd].SortField = Field Next Super.Sort(Mode) End 3. Then, we must work with RecordGroups which we can sort by, say, column 7 using myGroup.SortField(7). You see that we need to set each object's SortField property to the Field value in order to make the _compare()s work together as we desire. If some objects "don't get it", we will lose transitivity of our relation and the sort may fail. We can't use static properties in the Record class either because we may want to have multiple groups. These redundant assignments are what bothers us (also that we need a custom array type that we called "Group" to hide our clumsiness in communicating the SortField to each object). [ There are other ways of efficiently grouping elements but the ones I can think of are pretty obscure - but I'm open for suggestions! If none: ] Is it possible to - and what will existing code say if we - change _compare()'s signature to Public Sub _compare(hOther As Object, Optional vPrivate As Variant) and have a new corresponding optional argument to Object[].Sort() and MyClass[].Sort()? Sorting by column 7 in the above scenario would boil down to calling (without groups) Record[].Sort(7). Regards, Tobi -- "There's an old saying: Don't change anything... ever!" -- Mr. Monk ------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user