OVH Cloud OVH Cloud

PROBLEME REFERENCEMENT COLECTION

1 réponse
Avatar
PROBLEME REFERENCEMENT COLECTION
J'utilise une interface pour modifier les objets et proprietes d'une
collection qui est déclaré en public dans mon programme.

J'utilise une copie de la collection public afin de faire mes modifications,
je pourrais donc tres facilement revenir sur l'etat initiale de ma collection.
Par contre si il enregiste ces modifications, j initialiserai ma collection
public avec la copie locale.

Methode de copie de ma collection :
-----------------------------------------------------

'--- Copie locale de la collection : Variables
dim oVariable as Variable
dim cVariables as Variables
Set cVariables = New Variables
For Each oVariable In Public.ColVariables
cVariables.Add_Variable(oVariable, StrMsg,
oVariable.sCodeVariable) Then
Next
PS : Toutes les modifications, sont prises en compte dans cVariables.

Modifications de ma copie locale :
-----------------------------------------------------

'--- Lorsque je supprime un Item de la collection (copie Locale)
cVariables.remove (1)
PS : La suppression se fait uniquement au niveau de la copie Locale
C'est ce que j attendais......

'--- Lorsque je modifie un item
cVariables.item(1).sLibelle="XXXXXXXX"
PS : La modifications se fait au niveau des deux collections
Bizarre

Encore plus bizarre :
Si je modifie ma collection public, il me modifie ma copie Locale
exemple
si Pubc_Varaible.item(1).sLibelle="yyyyyyyyyy"
alors ma copie locale faut elle aussi
cVariables.item(1).sLibelle="yyyyyyyyyy"

AIDER MOI AIDER MOI AIDER MOI AIDER MOI AIDER MOI AIDER MOI
AIDER MOI AIDER MOI AIDER MOI AIDER MOI AIDER MOI AIDER MOI

MERCI D AVANCE

1 réponse

Avatar
Zoury
Salut! :O)

'--- Copie locale de la collection : Variables
cVariables.Add_Variable(oVariable, StrMsg,
oVariable.sCodeVariable) Then



tu ne fait pas une copie de l'objet, tu passes la référence à celui-ci,
c'est pourquoi il est modifié lorsque tu le modifies.. (les deux collections
pointe sur les même objets..)

si la classe cVariable est une classe que tu as codé, il te faudrait codé
une méthode Clone(), regarde ce lien pour plus de détail :
http://groups.google.com/groups?threadm=eijE9iKQDHA.1072%40TK2MSFTNGP10.phx.gbl

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/