Page 1 sur 1

Copier gros tableau d'un coup...

Publié : lun. 28/mai/2007 11:38
par scaraber
Salut,
Je cherche un moyen de copier un tableau assez gros sans faire des boucle interminable ... et aussi de copier juste un morceau d'un tableau.
a+
Scaraber

Publié : lun. 28/mai/2007 11:48
par Backup
bouton recherche (Search) sur le forum

retour :

http://www.purebasic.fr/french/viewtopi ... ht=tableau

Publié : lun. 28/mai/2007 11:49
par Flype
pour recopier l'intégralité d'un tableau un simple CopyMemory() est effectivement la plus rapide des solution :

Code : Tout sélectionner

;********** tableau initial

a_length = 100

Dim a.l(a_length)

For i = 0 To a_length - 1
  a(i) = Random(1000)
Next

;********** recopie dans le 2ème tableau

Dim b.l(a_length)

CopyMemory(a(), b(), a_length * SizeOf(Long))

;********** vérification

For i = 0 To a_length - 1
  Debug Str(a(i)) + " = " + Str(b(i))
Next


Publié : lun. 28/mai/2007 11:50
par scaraber
ok, merci beacoup de votre aide

Publié : lun. 28/mai/2007 11:51
par Flype
et pour juste un morceau - dans le même esprit :

Code : Tout sélectionner

;********** tableau initial

a_length = 100

Dim a.l(a_length)

For i = 0 To a_length - 1
  a(i) = Random(1000)
Next

;********** recopie 20 valeurs dans le 2ème tableau à la position 10.

Dim b.l(a_length)

CopyMemory(@a(10), @b(10), 20 * SizeOf(Long))

;********** vérification

For i = 0 To a_length - 1
  Debug Str(a(i)) + " => " + Str(b(i))
Next


Publié : lun. 28/mai/2007 12:01
par scaraber
Ok merci ;) heu sinon il y a un moyen de definir toutes les case d'un tableau a une meme valeur (dans le meme style) c'est pour reinitialiser le tableau mais mon programme utilise le zero et identifie les case "vide" avec une valeur de -1
a+
Scaraber

Publié : lun. 28/mai/2007 12:55
par Backup
scaraber a écrit :Ok merci ;) heu sinon il y a un moyen de definir toutes les case d'un tableau a une meme valeur (dans le meme style) c'est pour reinitialiser le tableau mais mon programme utilise le zero et identifie les case "vide" avec une valeur de -1
a+
Scaraber

Code : Tout sélectionner


Dim tableau.l(200)
Global valeur_dinitialisation =50


For i = 0 To 200
    PokeL(@tableau(i), valeur_dinitialisation)
Next 

CallDebugger

Publié : lun. 28/mai/2007 16:12
par scaraber
Merci :D

Publié : mar. 29/mai/2007 15:55
par scaraber
Heu j'ai encore une question :?:
Comment sa marche pour les tableau a deux dimenion ? sa marche par ligne ou par colone ? pour la copie d'un morceau
a+
Scaraber

Publié : mar. 29/mai/2007 16:33
par minirop
scaraber a écrit :Heu j'ai encore une question :?:
Comment sa marche pour les tableau a deux dimenion ? sa marche par ligne ou par colone ? pour la copie d'un morceau
a+
Scaraber
il n'y a pas de ligne ou de colonne danbs un tableau, sinon tu as cette organisation en mémoire :
[ ] = une case mémoire,

[ tab(0,0) ][ tab(0,1) ][ tab(0,2) ]...[ tab(1,0) ][ tab(1,1) ]...

Publié : mar. 29/mai/2007 18:46
par scaraber
Merci c'est ce que je voulait savoir