Fonction swap

Soyez le premier à donner votre avis sur cette source.

Vue 12 432 fois - Téléchargée 213 fois

Description

Salut
La source de gandalfkhorne m'a donné une idée.
En OpenVMS, il existe une fonction nommée SWAP qui est bien pratique et que l'on ne retrouve pas en VB.
Elle permet simplement d'inverser le contenu de deux variables.
C'est simple à faire, mais ça oblige à déclarer une variable juste pour servir de mémoire le temps de l'inversion. Quand on est en "Option Explicit" qui oblige à déclarer toutes les variables, c'est ... fatiguant.

Avec cette fonction que vous pouvez enregistrer dans un module dans le répertoire VB6\Template\Modules, vous l'aurez toujours sous la main quand vous ferez "Ajouter un nouveau module"
(Je suis sûr qu'il y en a qui ne connaissaient pas ce répertoire)

Source / Exemple :


Option Explicit

Public Function Swap(ByRef Valeur1 As Variant, _
                     ByRef Valeur2 As Variant) As Boolean

    Dim MemValeur1 As Variant, MemValeur2 As Variant
    Dim Temp As Variant
    
    On Error GoTo Erreur
    ' Mémorise les valeurs avant de commencer
    MemValeur1 = Valeur1
    MemValeur2 = Valeur2
    
    ' Fait le Swapping
    Temp = Valeur1
    Valeur1 = Valeur2
    Valeur2 = Temp
    ' Ok
    Swap = True
    Exit Function
    
Erreur:
    ' Souvent des erreurs de type de variables incompatibles
    ' On remet les valeurs initiales
    Valeur1 = MemValeur1
    Valeur2 = MemValeur2
    Swap = False
    
End Function

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
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és
1114
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
6 mai 2007

6 mai 2004 à 07:15
Je pense qu'il parlai du OpenVMS ;)
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
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és
70
Date d'inscription
dimanche 11 janvier 2004
Statut
Membre
Derniè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és
1114
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Derniè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 ;)
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.