[R] Tableau multidimensionnel

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
supermeganono
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 18 août 2008 01:25
Status : Hors ligne

[R] Tableau multidimensionnel

#1

Message par supermeganono »

Bonjour,

J'ai appris la programmation en réaliser mes sites web ( jeux online par formulaire et automatisé par php et mysql ). Je début dans Autoit3 et j'aurai aimer stocker des données dans un tableau multidimensionnel comme je le faisais avec php.
Dans php j'avais quelque chose comme :

Code : Tout sélectionner

$tableau[$compteur][$Posx][$Posy] = "information";
Les contenu de mes tableaux sont toujours généré par des fonctions, tout comme le $x et $y ( qui reste positif avec en général 2.000 en valeur maximum )

Dans Autoit après avoir lu pas mal de post et réponse j'obtient ceci pour tester :

Code : Tout sélectionner

Global $Ttab1[100]
Global $Ttab2[2000]
Global $Ttab3[2000]
Dim $pos[3] = [$Ttab1,$Ttab2,$Ttab3]
J'espérer donc pouvoir enregistrer 100 lignes de coordonnées $x et $y mais lorsque je fais un test aleatoire comme :

Code : Tout sélectionner

$pos[0][750][500] = "info1";
$pos[1][1000][1000] = "info2";
 
j'obtient : Array variable has incorrect number of subscripts or subscript dimension range exceeded.
ou encore un message me disant que je dépasse la taille maximal autorisé.


Apparement, je me plante sérieusement dans la déclaration et gestion de mes tableaux. Et malgré la documentation je n'arrive pas à gérer correctement ce genre de tableau. Quelqu'un pourrait-il m'expliquer svp ou me fournir un quelconque exemple svp ?


Merci bien.
Modifié en dernier par supermeganono le lun. 18 août 2008 20:47, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Tableau multidimensionnel

#2

Message par Tlem »

En fait, vous devez déclarer votre tableau comme ceci :

Code : Tout sélectionner

Dim $pos[100][2000][2000]
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jbnh
Niveau 11
Niveau 11
Messages : 1932
Enregistré le : ven. 02 mai 2008 14:54
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Tableau multidimensionnel

#3

Message par jbnh »

Pour la taille max, pas de panique :
When creating arrays you are limited to up to 64 dimensions and/or a total of 16 million elements.
Balise [..] devant votre requête en cours, [R] quand résolu | Pas de message concernant les bots !

Merci
tolf
Niveau 7
Niveau 7
Messages : 318
Enregistré le : ven. 15 févr. 2008 12:25
Localisation : Paris
Status : Hors ligne

Re: [..] Tableau multidimensionnel

#4

Message par tolf »

...et ici le tableau fait 100x2000x2000 = 400 millions de cases ?!
C'est peut-être un peu trop non :lol:
Lisez la documentation d'AutoIt en français (et participez svp :mrgreen:) !

Mes UDF :
[/i][/b]
supermeganono
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 18 août 2008 01:25
Status : Hors ligne

Re: [..] Tableau multidimensionnel

#5

Message par supermeganono »

...et ici le tableau fait 100x2000x2000 = 400 millions de cases ?!
C'est peut-être un peu trop non :lol:
Le truc c'est que non, voila le tableau ne fera jamais plus de 100 enregistrements dans l'exemple !
un exemple :

$pos[0][768][37]
$pos[1][327][1988]
$pos[2][1078][1678]
ect...
$pos[100][1534][369]

Donc ici mon tableau n'aura réellement que 100 informations ! Par contre je vois que dans autoit3, apparemment il génère le tableau dans son intégralité vide pour le remplir après.
Hors moi je ne rempli pas le tableau ! Je me sert du tableau pour stocker des informations dans le resultat ( = "info" ) mais aussi dans les index pour les positions !

Je travail sur l'axe x et y pour les position comme en géométrie, restant coté positif. Les index comme l'info contenu me servent pour mes programmes. Je sais c'est peut etre tordu pour stocker des infos, mais j'adore cette méthode.

Ainsi si j'interroge ma 2e information enregistré, je me sers de l'index pour savoir ou aller la chercher, tout le reste n'est qu'information que j'utilise. Je sais donc que sur mon graphique, l'info 2 se trouve au point x=1078 et y=1678 tout en contenant l'information que j'aurais trouver utile d'y associer ( chaine de caractère le plus souvent ).


Le truc c'est que j'ai besoin de pouvoir rechercher dans une liste 3 informations utile, pouvoir les modifier, les effacer ou les supprimer. J'avais aussi penser abandonner ces tableaux pour simplement créer une chaine de caractère genre :

Code : Tout sélectionner

Dim $pos[500]
$pos[0] = "x_y_resultat"
; Soit $pos[0] = "768_37_(valeur inexistante)"
 
Et de travailler cette chaine de caractère comme je le faisais dans php avec la fonction Split() permettant de scinder la chaine de caractère via un operateur ( _ ici dans notre exemple ) pour récupérer les différents résultats sous forme de tableau.

Mais après pas mal de recherche sur la documentation, j'ai pas encore trouver le moyen de faire ca.
Si vous savez m'aider sur ca, ca serai énorme ;) Ne serait-ce qu'un lien vers les fonctions, je testerai et me démmerderai :)

Merci !
supermeganono
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 18 août 2008 01:25
Status : Hors ligne

Re: [R] Tableau multidimensionnel

#6

Message par supermeganono »

Ne vous embêtez plus, je viens de trouver Stringsplit() qui va me permettre de tester tout ca !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Tableau multidimensionnel

#7

Message par Tlem »

C'est ce que je voulais vous proposer avant d'aller manger. ;)
Mais madame à appeler avant que je ne fasse le post. :lol:

Voici un exemple de son utilisation :

Code : Tout sélectionner

#Include <array.au3>

Dim $pos[100]

$pos[1] = "750|500|info1"
$pos[2] = "1000|1000|info2"

$aDatas = StringSplit($pos[1],"|")
_ArrayDisplay($aDatas,"Datas")

$aDatas = StringSplit($pos[2],"|")
_ArrayDisplay($aDatas,"Datas")
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
supermeganono
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 18 août 2008 01:25
Status : Hors ligne

Re: [R] Tableau multidimensionnel

#8

Message par supermeganono »

J'ai tester pas mal de chose sur ton script pour comprendre mieux la fonction _ArrayDisplay() et l'include ( #Include <array.au3> ).

Par contre après avoir rechercher je n'ai trouver l'explication de _ArrayDisplay() qu'en anglais, et je ne trouve pas dans la doc francaise ( ici ). Existe il une page comprenant l'explication des includes nécessaire lors de l'utilisation de certaine fonctions et la liste des fonctions concerner comme _ArrayDisplay() ( un peu comme les fonction ici )


En tout cas merci pour vos réponses, je test des tas de trucs débile et inutile mais ca me permet d'apprendre le langage que je trouve franchement sympa ^^ Surtout quand on est qu'amateur de programmation ;)
SagePourpre
Niveau 7
Niveau 7
Messages : 442
Enregistré le : dim. 06 juil. 2008 09:11
Status : Hors ligne

Re: [R] Tableau multidimensionnel

#9

Message par SagePourpre »

supermeganono a écrit : Existe il une page comprenant l'explication des includes nécessaire lors de l'utilisation de certaine fonctions et la liste des fonctions concerner comme _ArrayDisplay()

Je ne sais pas pour la documentation française ( je ne l'ai jamais lu ) mais si tu tapes le nom d'une fonction dans l'index de l'aide d'autoit, tu as la description et s'il y'a un include à mettre, il est dans la boîte jaune juste avant la fonction.
Le Sage Pourpre, pour qui la vie est tellement
plus belle vue du haut de son Pouf = )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Tableau multidimensionnel

#10

Message par Tlem »

supermeganono a écrit :Par contre après avoir rechercher je n'ai trouver l'explication de _ArrayDisplay() qu'en anglais, et je ne trouve pas dans la doc francaise
La documentation est en cours de traduction, et nous ne sommes pas nombreux à s'être attelé à cette tache.
Actuellement, pour ma part j'ai du mal à trouver le temps de continuer. Mais de temps en temps je fait un truc par-ci un truc par-là. :roll:

En ce qui concerne les includes, plusieurs solutions :
- Dans Scite deux clics sur la fonction que vous avez tapez pour la mettre en surbrillance puis F1 pour afficher l'aide de la fonction (En Anglais pour le moment). En général, comme l'a dit SagePourpre, vous trouverez dans le cadre jaune la première ligne qui indique l'include à rajouter.
Ceci est valable pour les fonctions externes, mais pour les fonctions internes il est souvent nécessaire de rajouter un include pour les constantes et là il n'y à pas d'indication sauf dans l'exemple qui lui est associé en fin de l'aide.

- Deux autres solutions ici : http://www.autoitscript.fr/forum/viewto ... =21&t=1000
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
supermeganono
Niveau 1
Niveau 1
Messages : 7
Enregistré le : lun. 18 août 2008 01:25
Status : Hors ligne

Re: [R] Tableau multidimensionnel

#11

Message par supermeganono »

Ok merci bien à vous.
Bon courage pour la traduction, c'est un boulot très apprécié surtout par ceux qui ont du mal avec l'anglais comme moi :lol:
Répondre