je voudrais trier un Array (ici var(4)).
En fait, j'ai créé une classe Carte qui contient deux propriétés : Carte.Couleur as Uinteger et Carte.Nombre as Uinteger.
var() est un array de type Carte.
Comment trier les valeurs de var en fonction de leur propriété Nombre??
merci encore et qi vous avez des problèmes ou des questions...
voilà le code en fait :
'----------------
Public
Function IsStraightflush(ByVal c1 As Carte, _
ByVal c2 As Carte, _
ByVal BestNumber AsInteger, _
ByVal Flop1 As Carte, _
ByVal Flop2 As Carte, _
ByVal Flop3 As Carte, _
OptionalByVal Turn As Carte = Nothing, _
OptionalByVal Riviere As Carte = Nothing) AsBoolean
Dim var(5) As Carte
'initialisation
var(0) = c1
var(1) = c2
var(2) = Flop1
var(3) = Flop2
var(4) = Flop3
IfNot Turn IsNothingThen
ReDimPreserve var(6)
var(5) = Turn
EndIf
IfNot Riviere IsNothingThen
ReDimPreserve var(7)
var(6) = Riviere
EndIf
Array.Sort(var) 'Erreur : ne peut trier ce genre de classe
moutonjr
Messages postés65Date d'inscriptionmercredi 19 juillet 2006StatutMembreDernière intervention 5 juin 2012 4 déc. 2007 à 23:11
pour résumer en fait le support microsoft ( pour les personnes qui errent dans ce forum) :
Si une classe MaCla possède une propriété MaProp de type alphanumérique (lettre et chiffre)
A l'aide d'une nouvelle classe SortCla qui implémente Icomparer on peut donc modifier le mode de comparaison
on ajoute la fonction compare implémentée de Icomparer.compare donc on précise les critères de comparaison pour MaCla en comparant les MaCla.MaProp
dans le code on initialise un nouvel objet de type SortCla et on peut désormais utiliser Array.Sort(array, comparer) en remplaçant les données. voici le produit final :
Public
Class SortCla
Implements IComparer
Public
Function Compare(
ByVal x
As
Object,
ByVal y
As
Object)
As
Integer
Implements System.Collections.IComparer.Compare
Dim cx
As MaCla =
DirectCast(x, Macla)
Dim cy
As MaCla =
DirectCast(y, MaCla)
Return cx.Nombre.CompareTo(cy.MaProp) ' si donnée numérique
Return String.Compare(cx.MaProp, cy.Maprop) ' si données alphanumériques