begin process at 2012 02 14 16:18:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

General

 > 

Array.Sort() pour une classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Array.Sort() pour une classe

lundi 3 décembre 2007 à 20:43:17 | Array.Sort() pour une classe

moutonjr

Bonjour à tous,
j'ai mon code :
http://tools.codes-sources.com/copy-paste-code.aspx?ID=49

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

'-----------------------


Comme quoi, vraiment rien n'est impossible...
lundi 3 décembre 2007 à 20:44:42 | Re : Array.Sort() pour une classe

moutonjr

c'est pas grave la mise en forme n'est pas du tout passée..., il y avait des espaces avant...

Comme quoi, vraiment rien n'est impossible...
lundi 3 décembre 2007 à 23:07:30 | Re : Array.Sort() pour une classe

Elxior

Réponse acceptée !
Regardes du côté de l'interface IComparable.

http://support.microsoft.com/kb/320727/fr

We can't solve problems by using the same kind of thinking we used when we created them.
mardi 4 décembre 2007 à 23:11:53 | Re : Array.Sort() pour une classe

moutonjr

Réponse acceptée !
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

PublicFunction Compare(ByVal x AsObject, ByVal y AsObject) AsIntegerImplements 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

EndFunction

End

Class'et dans le code :

Dim Arr() As MaCla = {...}
Dim Comp AsNew SortCla

Array.Sort(Arr, Comp)



merci a excelsior et à NeuroCypher!

Comme quoi, vraiment rien n'est impossible...


Cette discussion est classée dans : carte, var, classe, array, byval


Répondre à ce message

Sujets en rapport avec ce message

Probème d'évènements avec un classe reprise dans un tableau (array) [ par doct ] Salut,je ne sais pas si je me fais bien comprendre, mais en gros, lorsque je déclare une classe de cette manière :dim withevents Cls() as Classe1ça ne problem de colision [ par nazim_tafat ] voici mon code si quelqun peux m'aider je lance plusieur boules de diferent couleure et elles veulent pas se toucher je siat pas pourquoi : var vite problem de colision [ par nazim_tafat ] voici mon code si quelqun peux m'aider je lance plusieur boules de diferent couleure et elles veulent pas se toucher je siat pas pourquoi : var vite proble de colision [ par nazim_tafat ] voici mon code si quelqun peux m'aider je lance plusieur boules de diferent couleure et elles veulent pas se toucher je siat pas pourquoi : var vite Erreur de compliation: nom ambigu détecté : CreateRoundRectRgn [ par Rido159 ] Bonjour je suis débutant en vb ,j 'essaye de crée un client d un chat vocal pour un serveur j'ai rencontré un probléme genre:  Erreur de compliation: Numéroter des noms de variables [ par stefdem ] Bonjour, J'aimerais connaitre l'astuce (si elle existe) pour numéroter des variables. Je m'explique : J'aimerais définir et gérer une grande série d Impossible d'instancier un OWC : classe PivotTableDeprecated [ par Nephilim ] Re-bonjour, me voila avec une seconde question stupide ... comment instancier une PivotTable (OWC10) sans l'afficher ? Je m'explique, dans mon activ Saut de page sur excel [ par vbafredvba ] Bonjour,Je souhaite introduire un saut de page sur une feuille excel a chaque fois que dans la cellule d'une ligne il y a un changement de pays!!!le t Reset sur carte à puce avec mscomm [ par stolken ] Salut tt le monde, J'essaye de faire un programme pour dialoguer avec une carte à puce. Je n'arrive meme pas à faire le reset, j'ai recherché sur le s Reset sur carte à puce avec mscomm [ par stolken ] Salut tt le monde, J'essaye de faire un programme pour dialoguer avec une carte à puce. Je n'arrive meme pas à faire le reset, j'ai recherché sur le s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales