PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → ?WinDev et les pointeurs?
?WinDev et les pointeurs?
Iniciado por Jean, jun., 30 2005 12:32 PM - 7 respostas
Publicado em junho, 30 2005 - 12:32 PM
bonjour,
je voudrais savoir comment windev gere les pointeurs.
en gros je souhaite referencer des objets dans 2 tableaux différents et à chaque modif de ces objets ne pas avoir à mettre moi meme les tableaux à jour.

en gros si adr = &mon_objet, comment recuperer le contenu de cette adresse plus tard ?
Publicado em junho, 30 2005 - 1:18 PM
Salut,

Il suffit normalement de déclarer l objet et de le mettre dans le tableau.
Il y sera référencé par son adresse, ce ne sera pas une copie de l'objet qui sera insérée.

Autrement dit, si tu mets un objet dans deux tableaux différents et que tu modifies l'un d'eux, tu verras la modif sur l'autre car c'est EXACTEMENT le meme objet qui est référencé.
Publicado em junho, 30 2005 - 2:19 PM
merci pour ta réponse, mais j'ai bien peur de te contredire,
j'ai testé ta réponse avec ce code:


mastruct est une structure
nom est une chaîne
FIN

ttableau1 est un tableau de 0 mastruct
ttableau2 est un tableau de 0 mastruct

i est mastruct

i:nom = "dudu"
TableauAjoute(ttableau1,i)
TableauAjoute(ttableau2,i)
Info(ttableau1[1]:nom)
i:nom = "roger"
Info(ttableau1[1]:nom)
Info(ttableau2[1]:nom)



et les 3 fois, j'affiche "dudu"

peux tu me donner le code qui fonctionne dans ton cas?
d'avance merci
Publicado em junho, 30 2005 - 7:13 PM
Essaye :

mastruct est une structure
nom est une chaîne

FIN

ttableau1 est un tableau dynamique de 0 mastruct //--- Place mémoire
réservée

ttableau2 est un tableau dynamique de 0 mastruct dynamique //--- Lien vers
ttableau1

i est mastruct

i:nom = "dudu"

TableauAjoute(ttableau1,i) //--- Attention ! alloue une nouvelle place pour
une structure de type mastructure mais ne fait pas un lien dynamique vers i

Dimension(ttableau2,Dimension(ttableau2)+1); ttableau2[1] = ttableau1[1]
//-- N'alloue pas de place, ne fait que référence au lien

Info(ttableau1[1]:nom,ttableau2[1]:nom,i:nom) //--- Retourne : dudu, dudu,
dudu

ttableau1[1]:nom = "roger"; i:nom = "roger-i"

Info(ttableau1[1]:nom,ttableau2[1]:nom,i:nom) //--- Retourne : roger, roger,
roger-i

ttableau2[1]:nom = "toto"; i:nom = "toto-i"

Info(ttableau1[1]:nom,ttableau2[1]:nom,i:nom) //--- Retourne : toto, toto,
toto-i

Cordialement
Emmanuel

"Jean" <carjemanog@hotmail.com> a écrit dans le message de news:
42c3bc9e$1@news.pcsoft.fr...

merci pour ta réponse, mais j'ai bien peur de te contredire,
j'ai testé ta réponse avec ce code:


mastruct est une structure
nom est une chaîne
FIN

ttableau1 est un tableau de 0 mastruct
ttableau2 est un tableau de 0 mastruct

i est mastruct

i:nom = "dudu"
TableauAjoute(ttableau1,i)
TableauAjoute(ttableau2,i)
Info(ttableau1[1]:nom)
i:nom = "roger"
Info(ttableau1[1]:nom)
Info(ttableau2[1]:nom)



et les 3 fois, j'affiche "dudu"

peux tu me donner le code qui fonctionne dans ton cas?
d'avance merci

Publicado em julho, 01 2005 - 1:25 AM
mastruct est une structure
nom est une chaîne
FIN

ttableau1 est un tableau de 0 mastruct dynamique
ttableau2 est un tableau de 0 mastruct dynamique

i est mastruct dynamique = allouer un mastruct

i:nom = "dudu"
TableauAjoute(ttableau1,i)
TableauAjoute(ttableau2,i)
Info(ttableau1[1]:nom)
i:nom = "roger"
Info(ttableau1[1]:nom)
Info(ttableau2[1]:nom)
Publicado em julho, 01 2005 - 12:54 PM
completement merci à toi, maintenant j'y vois plus clair!
bonne continuation!
Jean
Publicado em julho, 01 2005 - 12:55 PM
ah oui la tout de suite ca fonctionne mieux... merci beaucoup :)
Jean
Publicado em julho, 04 2005 - 1:46 PM
Petite info:

Ok bon alors faut voir ce qu on entend par "objet"
Moi j'ai pensé que c'était une instance de classe. Un objet en POO quoi.