Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
997 connectés 

  FORUM HardWare.fr
  Programmation

  [VB6] ByVal ou ByRéf ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB6] ByVal ou ByRéf ?

n°18846
Hepil
Posté le 16-03-2001 à 09:22:06  profilanswer
 

j'ai beau lire et relire la doc, je vois bien la différence qu'il y a entre ces deux options, mais je ne vois toujours pas l'UTILITE !
 
Dans quel cas privilégier l'un ou l'autre ?

 

[edit]--Message édité par Hepil--[/edit]

mood
Publicité
Posté le 16-03-2001 à 09:22:06  profilanswer
 

n°18850
RalphXML
Posté le 16-03-2001 à 16:55:00  profilanswer
 

Salut,
 
La difference est fondamentale.
 
Quand tu passes la variable par valeur, meme si tu fais des manipulation sur celle-ci dans ta fonction(procedure), apres la retour dans ton code appelant, la valeur n'est pas modifiee. Quand tu passe la variable par referance , toute modification de celle ci se retrouvera a la sortie de la fonction.
 
 
A+
 
Raphael


---------------
*******************************************
n°18869
Kyle_Katar​n
Posté le 16-03-2001 à 19:11:33  profilanswer
 

Je sais pas si tu as fais du pascal déjà mais ça reviens à passer la variable par valeur ou par adresse.
Par défaut il me sembler que VB utilise ByVal, ça ne sert donc à rien de le mettre. Par contre en ByRef, l'avantage c'est que ça t'occupes moins de mémoire (en effet tu travaille directement sur la variable). L'avantage du ByVal est que tu n'altère pas la variable de paramètre lors du process de ta sub/fct.

n°20453
Hepil
Posté le 26-03-2001 à 14:00:25  profilanswer
 

j'étais absent 8 jours !
donc ce n'est utilisé que pour les procédures ?

n°20845
Sylderon
Posté le 27-03-2001 à 21:45:25  profilanswer
 

Ces mots-clés sont utilisés aussi bien pour les procédures que pour les fonctions.
Par défaut c'est byref qui est utilisé.
Si un paramètre est passé entre parenthèses, alors il est passé par valeur (byval) dans le cas ou la déclaration de ta fonction/procédure ne précise pas le mode d'utilisation.
Amuse-toi avec cet exemple:
 
sub test_sub(param1 as string, byval param2 as string)
 param1 = "coucou"
 param2 = "RE coucou"
end sub
 
sub test()
 dim a as string
 dim b as string
 
 a = "A"
 b = "B"
 
 test_sub a, b
 ' résultat a = "coucou" et b = "B"
 
 test_sub (a), c
 ' résultat a = "A" et b = "B"
 
 
end sub
 
Pour ce qui est de l'utilité, voici un autre exemple:
Admettons que tu doives créer une fonction CONNX_DISPO() de connexion à un dispositif quelconque.
Cette connexion initialise des variables qui te servent à utiliser ce dispositif, à l'identifier.
Cette connexion permet aussi d'identifier toutes les erreurs qui ont empêché la connexion.
 
L'utilisation des paramètres avec ByRef permet de faire ceci
 
dim id_dispo, lib_dispo, env_dispo, etc_dispo
 
code_erreur = CONNX_DISPO(id_dispo, lib_dispo, env_dispo, etc_dispo)
if code_erreur then  
 exit...
else
 ' utilisation des variables id_dispo,... initialisées par CONNX_DISPO()
 ...
 
La fonction peut ainsi renvoyer plusieurs valeurs, plus un éventuel code d'erreur sans utiliser de variables globales (seul autre moyen de récupérer plusieurs valeurs d'une fonction).
Cela permet de limiter l'utilisation mémoire. Surtout en vb où tu n'as le choix qu'entre des variables globales à tout un module, ou restreintes à la procédure en cours.
Cette technique permet dans ce cas de créer des variables restreintes à une procédure, mais utilisables dans les procédures appelées par celle-ci, sans consommer plus de mémoire.
 
J'espère avoir défriché le problème.
 
A+

n°20886
Hepil
Posté le 28-03-2001 à 08:28:58  profilanswer
 

Merci
j'y cojite et l'emploierai
sûr sûr ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [VB6] ByVal ou ByRéf ?

 

Sujets relatifs
[VB6] et les doubles-quotes[VB6] Filtrer un recordset ou le réouvrir ?
[VB6] ralentissement avec : Movefirst et Filter[VB6] Composants COM et compatibilité
[VB6] passage en C ? Pourquoi ?[VB6] Les composants COM
[VB6] Quel format de tableau choisir ?!?VB6 : ca morche po ...
[VB6 + ORACLE]VB6 : empecher de redimensionner une fenetre ...
Plus de sujets relatifs à : [VB6] ByVal ou ByRéf ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR