OVH Cloud OVH Cloud

Copier 2 tableaux ??

6 réponses
Avatar
Julien
J'ai 2 tableaux dynamiques qui contiennent des structures.
Chaque structure contient une chaine et une classe.

Je souhaite faire une copie du premier tableau vers le deuxiéme.

J'ai essayé :
//*********************************************
Tablo1, Tablo2 est un tableau de 3 StructureToto

... // On rempli Tablo1

POUR i=1 A Dimension(Tablo1)
Tablo2[i] = Tablo1[i]
FIN
// Provoque une erreur : "L'objet dynamique a déjà été libéré"

//*********************************************
et aussi :
//*********************************************

Tablo2 = Tablo1
// la, les 2 tableaux prennent la mêm adr mémoire
// ce que je ne veux pas

//*********************************************


Donc, comment faire pour avoir 2 tableaux identiques ??!


Merci, Julien

6 réponses

Avatar
Romain PETIT
Julien a écrit :
Donc, comment faire pour avoir 2 tableaux identiques ??!



Transfert(&Tableau1, &Tableau2, dimension(tableau1))

A+

--
Romain PETIT
(mailto:rompetit_chez_ifrance.com)
Avatar
Julien
Super, j'en suis la !
Je l'avais trouvé, mais "Dimension(Tablo)" renvoi le nb de cellules du
tablo,
alors qu'il faut des octets pour la fonction Transfert !

Comment fair pour avoir la taille de mon tableau en octet ??

Merci


"Romain PETIT" a écrit dans le message news:
3f618d00$0$20636$
Julien a écrit :
> Donc, comment faire pour avoir 2 tableaux identiques ??!

Transfert(&Tableau1, &Tableau2, dimension(tableau1))

A+

--
Romain PETIT
(mailto:rompetit_chez_ifrance.com)



Avatar
Romain PETIT
Julien a écrit :

Super, j'en suis la !
Je l'avais trouvé, mais "Dimension(Tablo)" renvoi le nb de cellules du
tablo,
alors qu'il faut des octets pour la fonction Transfert !

Comment fair pour avoir la taille de mon tableau en octet ??




oui, pardon, il faut multiplier la dimension d'une variable par la dimension
du tableau.

Exemple :
strtoto est une structure
eEntier est un entier
sChaine est une chaîne
FIN
varstrtoto est une strtoto
tableau1,tableau2 est un tableau de 3 strtoto

tableau1[1]:eentier = 1
tableau1[2]:eentier = 2
tableau1[3]:eentier = 3

tableau1[1]:sChaine = "chaine 1"
tableau1[2]:sChaine = ""
tableau1[3]:sChaine = "chaine3"

Transfert(&tableau2, &tableau1, Dimension(tableau1)*Dimension(varstrtoto))

c est un entier
POUR c=1 A 3
Trace(tableau2[c]:eentier+" "+tableau2[c]:sChaine)
FIN


--
Romain PETIT
(mailto:rompetit_chez_ifrance.com)
Avatar
Julien
Oui, ok... mais ma strcture est du type :

strToto est une structure
Nom est une chaine
Obj est un classeMesClients
FIN

...

classeMesClients est une classe
// Des chaines et des entiers et des Méthodes
...
FIN

...

// et j'ai donc mes tableaux :

Tableau1, Tableau2 est un tableau dynamique de eEntier strToto



Est-ce que ça marche encore dans ces conditions ?

Merci


"Romain PETIT" a écrit dans le message news:
3f61a3d0$0$20653$
Julien a écrit :

> Super, j'en suis la !
> Je l'avais trouvé, mais "Dimension(Tablo)" renvoi le nb de cellules du
> tablo,
> alors qu'il faut des octets pour la fonction Transfert !
>
> Comment fair pour avoir la taille de mon tableau en octet ??


oui, pardon, il faut multiplier la dimension d'une variable par la


dimension
du tableau.

Exemple :
strtoto est une structure
eEntier est un entier
sChaine est une chaîne
FIN
varstrtoto est une strtoto
tableau1,tableau2 est un tableau de 3 strtoto

tableau1[1]:eentier = 1
tableau1[2]:eentier = 2
tableau1[3]:eentier = 3

tableau1[1]:sChaine = "chaine 1"
tableau1[2]:sChaine = ""
tableau1[3]:sChaine = "chaine3"

Transfert(&tableau2, &tableau1, Dimension(tableau1)*Dimension(varstrtoto))

c est un entier
POUR c=1 A 3
Trace(tableau2[c]:eentier+" "+tableau2[c]:sChaine)
FIN


--
Romain PETIT
(mailto:rompetit_chez_ifrance.com)



Avatar
Romain PETIT
Julien a écrit :

Oui, ok... mais ma strcture est du type :

strToto est une structure
Nom est une chaine
Obj est un classeMesClients
FIN

...

classeMesClients est une classe
// Des chaines et des entiers et des Méthodes
...
FIN

...

// et j'ai donc mes tableaux :

Tableau1, Tableau2 est un tableau dynamique de eEntier strToto



Est-ce que ça marche encore dans ces conditions ?



Pfui, fallait le dire que c'était si compliqué :-)
A priori ça fonctionne :
(j'ai par contre une erreur de violation à la fin du destructeur de la
dernière Instance de classe, mais c'est probablement parceque ma classe
n'est pas prévue pour ça...)


strToto est une structure
Nom est une chaîne
Obj est un objet cTrace //une classe
FIN

varstrtoto est un strToto

eEntier est un entier = 3
tableau1,tableau2 est un tableau dynamique de eEntier strToto

tableau1[1]:Nom = "chaine 1"
tableau1[2]:Nom = ""
tableau1[3]:Nom = "chaine3"

Transfert(&tableau2, &tableau1, Dimension(tableau1)*Dimension(varstrtoto))

c est un entier
POUR c=1 A 3
Trace(tableau2[c]:Obj:sCleCryptage)
//on affiche bien la variable
tableau2[c]:Obj:Tracer("Test")
//on passe bien par cette méthode de la classe
FIN

A+

--
Romain PETIT
(mailto:rompetit_chez_ifrance.com)
Avatar
Julien
J'ai aussi cette erreur de violation, je pense que c un accés mémoire qui
déborde qq part...
Après ça tourne à l'usine à gaz, c pénible...

je vais voir comment je vais faire !

Merci en tous cas !


"Romain PETIT" a écrit dans le message news:
3f61b1ee$0$20619$
Julien a écrit :

> Oui, ok... mais ma strcture est du type :
>
> strToto est une structure
> Nom est une chaine
> Obj est un classeMesClients
> FIN
>
> ...
>
> classeMesClients est une classe
> // Des chaines et des entiers et des Méthodes
> ...
> FIN
>
> ...
>
> // et j'ai donc mes tableaux :
>
> Tableau1, Tableau2 est un tableau dynamique de eEntier strToto
>
>
>
> Est-ce que ça marche encore dans ces conditions ?

Pfui, fallait le dire que c'était si compliqué :-)
A priori ça fonctionne :
(j'ai par contre une erreur de violation à la fin du destructeur de la
dernière Instance de classe, mais c'est probablement parceque ma classe
n'est pas prévue pour ça...)


strToto est une structure
Nom est une chaîne
Obj est un objet cTrace //une classe
FIN

varstrtoto est un strToto

eEntier est un entier = 3
tableau1,tableau2 est un tableau dynamique de eEntier strToto

tableau1[1]:Nom = "chaine 1"
tableau1[2]:Nom = ""
tableau1[3]:Nom = "chaine3"

Transfert(&tableau2, &tableau1, Dimension(tableau1)*Dimension(varstrtoto))

c est un entier
POUR c=1 A 3
Trace(tableau2[c]:Obj:sCleCryptage)
//on affiche bien la variable
tableau2[c]:Obj:Tracer("Test")
//on passe bien par cette méthode de la classe
FIN

A+

--
Romain PETIT
(mailto:rompetit_chez_ifrance.com)