Le 28 juil. 06 à 16:45 Soir, Damien a écrit:
Est-il possible d'avoir le bout de code correspondant à tes manips?
Je suppose qu'il a fait quelque chose du genre (je n'en suis pas
sûr), illustré par cet exemple:
dim d as date
dim e as date
d=new date
e=new date
d.day=4
e.day=5
e=d
e.day=6
Là, le fait de changer e.day à 6 change également d.day à 6 car
"e=d", vous pouvez essayer , ça se passera comme ça.
En tout cas en Realbasic, il faut différencier deux sortes de
variables: les objets et "les autres".
Un objet lié à un autre par le signe égal (tel que l'exemple ci-
dessus) ne fait que pointer l'objet à gauche de l'égal à la même
place mémoire que l'objet à droite. Cela signifie que les deux objets
(ici e et d) ont un pointeur vers la même adresse mémoire. On modifie
l'un des deux et l'autre "voit" le même changement.
Pour une variable qui n'est pas de type objet, (integer, boolean,
etc.), là le contenu est copié (l'explication d'une telle différence
m'est vague).
Donc, pour l'exemple ci dessus, plutôt que d'écrire:
e=d
il aurait fallu écrire
e.totalseconds=d.totalseconds
Le problème de Hubert, comme je le comprends, est qu'il prend la
propriété StyledText (qui renvoie un objet de type StyledText (comme
on pouvait s'y attendre...)) et qu'il le modifie (ayant préalablement
passé par une variable). C'est comme j'explique: mettre un objet dans
une autre variable en utilisant le signe "=" ne fait que lier les
deux objets. On modifie l'un des deux et l'autre reflète le changement.
Je sais que ce n'est ni élégant ni amusant, mais en général il faut
s'amuser à copier les propriétés d'un objet à un autre pour résoudre
ce problème (certains objets ont une méthode "clone", tel qu'un objet
son), mais de loin pas tous en Realbasic.
PS: si j'ai bien compris le problème de Hubert.
|