Utilisateur anonyme
-
2 mai 2004 à 01:55
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
14 mars 2006 à 11:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 14 mars 2006 à 11:50
Variant utilisé... faudrait donc prévoir le coup avec les objets ...
(en gros)
If IsObject ( A) And IsObject ( B) And TypeOf A Is TypeOf B Then
Set Tmp = A
Set A = B
Set B = Tmp
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 6 mai 2004 à 07:15
Je pense qu'il parlai du OpenVMS ;)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 mai 2004 à 23:09
Gandalfkhorne : Parce que dans ta source d'aléatoirisation de valeur dans un tableau, tu fais cette manip qui consiste à inverser le contenu de deux variables, sur le même principe que cette fonction. C'est tout.
Pour le langage source, je ne comprends pas de quoi tu parles : C'est du VB, pur et dur. C'est une simple fonction que tu colles dans un module, et partout ailleurs dans ton code, quand tu auras besoin de faire un swap de deux valeurs, tu n'auras qu'à entrer "Swap Variable1, Variable2".
gandalfkhorne
Messages postés70Date d'inscriptiondimanche 11 janvier 2004StatutMembreDernière intervention 1 octobre 2004 5 mai 2004 à 21:53
le language source de cette fonction c koi, sinon pour l'aléatoirisation ça marche jtai expliker lol, sinon sympa ta source :)
++
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 4 mai 2004 à 13:12
je viens d'apprendre 2 choses, les histoires de répertoires de VB, et qu'il éxiste des fonctiones intéressantes dans d'autre langage, meme 3 choses en fait, je connaissait pas le langage source de cette fonction ;)
cs_JLN
Messages postés371Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention17 juin 2013 3 mai 2004 à 17:49
Voila ce que j'appelerai de l'optimisation... Bien qu'en temps ca ne change pas beaucoup. Peut-être une API changerai tout ca non ?
JLN
ennixo
Messages postés224Date d'inscriptionsamedi 25 janvier 2003StatutMembreDernière intervention17 juin 2006 3 mai 2004 à 11:06
' s'il y a un problème de variable avec l'une il y a un
' problème de variable avec l'autre donc rien n'a été
' changé donc pas besoin de mémoriser les valeurs !
' Swap = False est la valeur par défaut donc pas besoin
Public Function Swap(ByRef Valeur1 As Variant, ByRef Valeur2 As Variant) As Boolean
Dim Temp As Variant
On Error GoTo Erreur
Temp = Valeur1
Valeur1 = Valeur2
Valeur2 = Temp
Swap = True
Erreur:
End Function
ennixo
Messages postés224Date d'inscriptionsamedi 25 janvier 2003StatutMembreDernière intervention17 juin 2006 3 mai 2004 à 11:01
tout ça pour ça...
ya plutot intéret à ne pas swapper des variables dans une boucle sinon ça va sacrément ralentir tout !
Tilois
Messages postés721Date d'inscriptiondimanche 10 juin 2001StatutMembreDernière intervention27 mars 20117 3 mai 2004 à 07:19
Je pense pas que ce qui était interressant c'était vraiment le type des variables, bien qu'effectivement les variant soit très longs. En meme temps, deux variants seulement c'est pas énorme et ici il est pas question d'une boucle. Donc moi je prend ca comme un exemple de passage de parametres par reférence et non pas par valeur !
Parceque le type variant prend énormément de place en mémoire et est beaucoup plus long.
Fais une boucle prennant 10 secondes à effectuer, refais la en mettant un integer par exemple, tu verras la différence de vitesse ! (encore plus vrai une fois le programme compilé).
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 2 mai 2004 à 23:47
Mais pourquoi le type de variable vous inquiète tant que ça ?
La fonction utilise le type Variant pour justement se plier à tous les types de variables passées à la fonction :
Exemple : dans une sub, vous faites :
Dim x As Integer, y As Integer
Dim a As String, b As String
Swap x, y
Swap a, b
Les deux fontions marheront bien que les variables soient de types différents. Pas de soucis.
C'est une bonne idée !
Le répertoire template aussi !
Juste un hic....les variant ! Ou alors il faudrait créer plusieurs fonctions Swap avec des types de variables différents.
14 mars 2006 à 11:50
(en gros)
If IsObject ( A) And IsObject ( B) And TypeOf A Is TypeOf B Then
Set Tmp = A
Set A = B
Set B = Tmp
6 mai 2004 à 07:15
5 mai 2004 à 23:09
Pour le langage source, je ne comprends pas de quoi tu parles : C'est du VB, pur et dur. C'est une simple fonction que tu colles dans un module, et partout ailleurs dans ton code, quand tu auras besoin de faire un swap de deux valeurs, tu n'auras qu'à entrer "Swap Variable1, Variable2".
5 mai 2004 à 21:53
++
4 mai 2004 à 13:12
3 mai 2004 à 17:49
JLN
3 mai 2004 à 11:06
' problème de variable avec l'autre donc rien n'a été
' changé donc pas besoin de mémoriser les valeurs !
' Swap = False est la valeur par défaut donc pas besoin
Public Function Swap(ByRef Valeur1 As Variant, ByRef Valeur2 As Variant) As Boolean
Dim Temp As Variant
On Error GoTo Erreur
Temp = Valeur1
Valeur1 = Valeur2
Valeur2 = Temp
Swap = True
Erreur:
End Function
3 mai 2004 à 11:01
ya plutot intéret à ne pas swapper des variables dans une boucle sinon ça va sacrément ralentir tout !
3 mai 2004 à 07:19
3 mai 2004 à 01:05
Fais une boucle prennant 10 secondes à effectuer, refais la en mettant un integer par exemple, tu verras la différence de vitesse ! (encore plus vrai une fois le programme compilé).
2 mai 2004 à 23:47
La fonction utilise le type Variant pour justement se plier à tous les types de variables passées à la fonction :
Exemple : dans une sub, vous faites :
Dim x As Integer, y As Integer
Dim a As String, b As String
Swap x, y
Swap a, b
Les deux fontions marheront bien que les variables soient de types différents. Pas de soucis.
Oui bien sûr "ByRef" : Allez voir ce tuto : http://www.vbfrance.com/code.aspx?ID=7081
2 mai 2004 à 22:14
2 mai 2004 à 19:09
2 mai 2004 à 01:55
Le répertoire template aussi !
Juste un hic....les variant ! Ou alors il faudrait créer plusieurs fonctions Swap avec des types de variables différents.