a supposer que la création d'un fonction juste pour ca soit justifiée...
on pourrait utiliser des Variant
private Sub Swap ( A as variant , b as variant )
Dim tmp as variant
tmp = a
a = b
b = tmp
end sub
au fait, LightAngel, plutot que de passer en parametre une chaine representant le type de variable, utilises Vartype ( N1 ) par exemple (ou TypeName :( )
Bah merci, ca leve toujours certain doute, mais le but de cette source était de montré comment effectuer un swap sans utiliser de variable autre que celle que l'on a déjà, de plus si on fait d'une autre façon soit ou en soustrayant et en additionnant on risque de dépasser l'intervalle.
Salut, je crois qu'il y a une autre manière plus simple pour faire un Swap en une fonction qui comprend tout les types :
Public Function Swap (N1 as Object, N2 as Object, Type as String)
Select Case Type
Case "int"
Dim Temp as Integer
Temp = CInt (N1)
N1 = CInt (N2)
N2 = CInt (Temp)
Case "dbl"
Dim Temp as Double
Temp = CDbl (N1)
N1 = CDbl (N2)
N2 = CDbl (Temp)
Case "sht"
Dim Temp as Short
Temp = CShort (N1)
N1 = CShort (N2)
N2 = CShort (Temp)
' Et on continue la fonction comme sa avec tous les type désiré
End Select
End Sub
Enfin, il y a quand même plus simple, mais avec VB .Net ou bien le C++ (La surcharge) ...
Oui la technique est sympathique mais le resultat l'est deja moins
au lieu de rentrer dans de l'on discour faispons un teste. imaginons
quand meme que l'on enleve au minimum la gestion d'erreur pour
alleger le tout voila le bench :
Voici les deux fonction comparé :
Sub SwapLng(ByRef Nb1 As Long, ByRef Nb2 As Long)
Nb1 = Nb1 Xor Nb2
Nb2 = Nb1 Xor Nb2
Nb1 = Nb1 Xor Nb2
End Sub
Sub Swap(ByRef v1 As Long, ByRef v2 As Long)
Dim v3 As Long
v3 = v1
v1 = v2
v2 = v3
End Sub
27 juin 2004 à 20:31
27 juin 2004 à 17:54
on pourrait utiliser des Variant
private Sub Swap ( A as variant , b as variant )
Dim tmp as variant
tmp = a
a = b
b = tmp
end sub
au fait, LightAngel, plutot que de passer en parametre une chaine representant le type de variable, utilises Vartype ( N1 ) par exemple (ou TypeName :( )
27 juin 2004 à 17:33
C'est quand même la mienne la plus pratiqueuuuu !
lol
27 juin 2004 à 15:49
27 juin 2004 à 15:03
Public Function Swap (N1 as Object, N2 as Object, Type as String)
Select Case Type
Case "int"
Dim Temp as Integer
Temp = CInt (N1)
N1 = CInt (N2)
N2 = CInt (Temp)
Case "dbl"
Dim Temp as Double
Temp = CDbl (N1)
N1 = CDbl (N2)
N2 = CDbl (Temp)
Case "sht"
Dim Temp as Short
Temp = CShort (N1)
N1 = CShort (N2)
N2 = CShort (Temp)
' Et on continue la fonction comme sa avec tous les type désiré
End Select
End Sub
Enfin, il y a quand même plus simple, mais avec VB .Net ou bien le C++ (La surcharge) ...
A+