Page 1 sur 2
Array dans une structure
Publié : sam. 14/juil./2018 23:18
par bombseb
Resalut les copains
J'aimerais stocker un tableau à deux dimensions dans une structure. Petit problème, je ne connait pas à l'avance le nombre d'éléments dans ce tableau...
Je pense qu'il doit y avoir moyen de le faire avec un pointeur mais je ne sais pas trop comment...
Code : Tout sélectionner
Structure tileData
tile.u
EndStructure
Structure layer
name$
width.u
height.u
*datas.tileData ; <- Pointeur
EndStructure
[.....]
l.layer
Dim tmpTab (l\width - 1, l\height - 1)
ConvertDatas (tmp$, tmpTab ()) ; <- Fonction qui me renvoit un tableau
l\datas = @tmpTab ; Je stocke l'adresse du tableau dans ma structure
Comment accéder aux éléments du tableau de ma structure ensuite ??
Merci d'avance
Re: Array dans une structure
Publié : dim. 15/juil./2018 0:24
par poshu
Code : Tout sélectionner
Structure tileData
tile.u
EndStructure
Structure layer
name$
width.u
height.u
Array c.i(3,3)
EndStructure
Global testouille.layer
Dim testouille\c(34,34)
testouille\c(23,31) = 21
Debug testouille\c(23,31)
Re: Array dans une structure
Publié : dim. 15/juil./2018 10:53
par Kwai chang caine
Merci POSHU
Juste une question, tu a mis 3,3 au hasard , parce que j'ai essayé avec 0,0 ça marche aussi
Code : Tout sélectionner
Structure layer
Array c.i(0,0)
EndStructure
Global testouille.layer
Dim testouille\c(34,34)
testouille\c(23,31) = 21
Debug testouille\c(23,31)
Re: Array dans une structure
Publié : dim. 15/juil./2018 13:42
par poshu
J'ai mis 3,3... Parce que je me souvenais pas comment on déclarait un tableau dans une structure, j'ai été voir dans l'aide et j'ai copié collé l'exemple :p
Re: Array dans une structure
Publié : dim. 15/juil./2018 14:30
par bombseb
Olala bah merci pour l'info....
Je ne savait pas qu'on pouvait définir un tableau, puis ensuite utiliser Dim pour le redimensionner
Je croyais que pour redimensionner un tableau il fallait utiliser Redim. Sauf que sur les tableau à plusieurs dimensions, Redim ne redimensionne que la dernière dimension...
Re: Array dans une structure
Publié : dim. 15/juil./2018 14:34
par poshu
bombseb a écrit :Olala bah merci pour l'info....
Je ne savait pas qu'on pouvait définir un tableau, puis ensuite utiliser Dim pour le redimensionner
Je croyais que pour redimensionner un tableau il fallait utiliser Redim. Sauf que sur les tableau à plusieurs dimensions, Redim ne redimensionne que la dernière dimension...
En réutilisant dim, tu recrées un tableau de toutes pièces, toutes les données contenues dans le tableau original seront perdues.
Faudrait aussi vérifier que cette opération nettoie bien l'objet du premier tableau, sinon tu vas te retrouver avec une fuite... (<- comprendre j'ai la flemme de le faire, bonne chance

)
Re: Array dans une structure
Publié : dim. 15/juil./2018 15:07
par bombseb
Mouais je ne sais pas trop comment faire pour vérifier ca....
Bon en tout cas ca marche et c'est nickel ! Merci pour l'aide !
Re: Array dans une structure
Publié : dim. 15/juil./2018 15:08
par bombseb
En y réfléchissant, si tu définit un tableau avec zéro éléments dedans, logiquement ça ne devrait pas prendre de place en mémoire, donc il ne devrait pas y avoir de fuite en le redimensionnant non ?
Re: Array dans une structure
Publié : dim. 15/juil./2018 15:42
par poshu
bombseb a écrit :En y réfléchissant, si tu définit un tableau avec zéro éléments dedans, logiquement ça ne devrait pas prendre de place en mémoire, donc il ne devrait pas y avoir de fuite en le redimensionnant non ?
L'objet est quand même créé. Je bosse sur SB là, quand j'en aurai fini, je vais essayé de me motiver pour tester.
Re: Array dans une structure
Publié : dim. 15/juil./2018 16:26
par Kwai chang caine
@POSHU
Merci pour ta réponse, je voulais être sûr que y'avait pas une raison spéciale de mettre 3,3

Re: Array dans une structure
Publié : dim. 15/juil./2018 16:54
par bombseb
poshu a écrit :bombseb a écrit :En y réfléchissant, si tu définit un tableau avec zéro éléments dedans, logiquement ça ne devrait pas prendre de place en mémoire, donc il ne devrait pas y avoir de fuite en le redimensionnant non ?
L'objet est quand même créé. Je bosse sur SB là, quand j'en aurai fini, je vais essayé de me motiver pour tester.
Cool merci, tu me dira comment tu fait pour voir s'il y a une fuite mémoire au passage....
C'est quoi SB ? Super Bario ? Star braft ?

Re: Array dans une structure
Publié : dim. 15/juil./2018 16:56
par bombseb
Tiens j'ai vu ca dans l'aide :
Si Dim est utilisé sur un tableau existant, il réinitialise son contenu à zéro.
Je pense que ca ne fait pas de fuite du coup...
Re: Array dans une structure
Publié : dim. 15/juil./2018 16:58
par Ar-S
SpiderBasic
Re: Array dans une structure
Publié : dim. 15/juil./2018 17:00
par bombseb
hum ok...
Re: Array dans une structure
Publié : lun. 16/juil./2018 16:44
par boby
Olala bah merci pour l'info....
Je ne savait pas qu'on pouvait définir un tableau, puis ensuite utiliser Dim pour le redimensionner
Je croyais que pour redimensionner un tableau il fallait utiliser Redim. Sauf que sur les tableau à plusieurs dimensions, Redim ne redimensionne que la dernière dimension...
Si tu utilise la doc française et que c'est pas marqué dans la doc, utilise l'anglaise, là c'est marqué :
If Dim is used on an existing array, it will reset its contents to zero.