Page 1 sur 1

Copie de tableau [Résolu]

Publié : jeu. 15/mars/2007 12:59
par Kwai chang caine
Bonjour à tous

Est il possible de copier un tableau dans un autre sans avoir a passer par une boucle qui lis le premier pour le copier dans le second.

Ceci pour gagner du temps quand le tableau est grand.

Peut etre en passant par une copie de mémoire ???? Mais la , encore une fois mes capacités sont dépassées. :cry:

Merci et bonne journée

Publié : jeu. 15/mars/2007 13:18
par Patrick88
avec des pointeurs ?

pat

Publié : jeu. 15/mars/2007 13:38
par brossden
Exact pour Patrick88 !

Code : Tout sélectionner


Dim a.l(1000)
Dim b.l(1000)

;  Remplissage avec des valeurs aléatoires !!

For n=0 To 1000
  a(n)=Random(n)
Next

;Chaque élement du tableau prend 4 octets, la declaration 1000 crée de a(0) à a(1000) donc 1001 élements 
; Donc 1001*4 = 4004 octets de long !

CopyMemory(@a(),@b(),4004)

; Vérification !

For n=0 To 1000
  Debug Str(a(n))+"          "+Str(b(n))
Next

Pour un tableau chaines de caractères c'est impossible je pense car la taille du tableau est changée dynamiquement en fonction des éléments stockés dans ce tableau !

Publié : jeu. 15/mars/2007 16:12
par Kwai chang caine
Je vous remercie tous les deux de votre réponse. 8)

Vous allez me dire que je ne suis jamais content, mais si le tableau contient des strings, la méthode ne marche pas car on ne connait pas la longueur de chaque enregistrement.

Publié : jeu. 15/mars/2007 17:34
par Frenchy Pilou
Swap ?

Publié : jeu. 15/mars/2007 19:47
par Dr. Dri
Kwai chang caine a écrit :Je vous remercie tous les deux de votre réponse. 8)

Vous allez me dire que je ne suis jamais content, mais si le tableau contient des strings, la méthode ne marche pas car on ne connait pas la longueur de chaque enregistrement.
Si si! soit la chaine a une longeur fixe donc on connait sa taille, soit elle n'est pas fixe et c'est donc un pointeur...

Dri

Publié : lun. 19/mars/2007 13:20
par Kwai chang caine
Merci docteur :wink:
Tu as evidemment raison (Comme dab)

J'ai modifié le code de BROSSDEN pour que ce soit un tableau de variable et effectivement çamarche aussi.
C'est génial

Code : Tout sélectionner

Dim a.s(1000) 
Dim b.s(1000) 

;  Remplissage avec des valeurs aléatoires !! 

For n=0 To 1000 
  a(n)="Cette fois c'est bien du texte dans le tableau " + Str(Random(n))
Next 

;Chaque élement du tableau prend 4 octets, la declaration 1000 crée de a(0) à a(1000) donc 1001 élements 
; Donc 1001*4 = 4004 octets de long ! 

CopyMemory(@a(),@b(),4004) 

; Vérification ! 

For n=0 To 1000 
  Debug a(n)+"          "+ b(n) 
Next 
Cela va enormement simplifier les copies de tableau que je faisais avec une boucle FOR/NEXT.

Merci à tous de votre aide 8)

Publié : lun. 19/mars/2007 15:56
par Dr. Dri
Kwai chang caine a écrit :Merci docteur :wink:
Tu as evidemment raison (Comme dab)
Bah quand on a besoin d'aide on espère une réponse donc en retour quand on peut la donner on se prive pas ^_^

Dri

PS. c'est quoi cette habitude que tout le monde prend de m'appeler docteur ?

Publié : lun. 19/mars/2007 18:30
par Kwai chang caine
8)

Publié : lun. 19/mars/2007 18:39
par Flype
ah c'est beau l'entraide :)

Publié : lun. 19/mars/2007 18:56
par Kwai chang caine
Salut FLYPE

Tu as raison, on se sent moins seul. :wink:
Surtout pour des gens comme moi, car parfois devant mon ecran j'ai l'impression de suivre une emmission sur le tricotage 8O
J'y comprend rien, alors, j'appelle ALICE, euuuh non, le forum et la famille pure, et y'a toujours un grand frere pour me pousser un peu plus loin....................
Pas beaucoup plus loin car je doit surement avoir oublié de déssérer le frein à main, mais plus loin quand même. :lol:

Vive la grande famille PURE 8)