Gambas France BETA


Pas de compte ? Incription

Afficher simplement une variable[][] dans un textaera.

1
AuteurMessages
loki#1 Posté le 14/2/2011 à 15:23:00
Salut a tous,

Je voudrai afficher simplement une variable en tableau 3d genre 'arsTableau[][]' dans un textaera sans passer par 2 boucles, j'ai essayer avec des 'split()' sans résultat... il doit avoir une façon de tourner ca en une ligne de code ;)

a+
loki
Dell Vostro 3750
Ubuntu 13.04 - Gambas 3.4.1
loki#2 Posté le 19/2/2011 à 17:34:00
Bon ben je vois que ca inspire :lol: c'est surement que ca doit pas être possible...

moi j'arrive qu'a afficher le dernier d'une variable[][] par exemple ce code me donne '5'

1
2
3
4
5
6
7
8
DIM stest1 AS NEW STRING[2, 2]
DIM stemp1 AS STRING

stest1[0, 0] = "2"
stest1[0, 1] = "3"
stest1[1, 0] = "4"
stest1[1, 1] = "5"
FOR EACH TextArea1.Text IN stest1 NEXT
Dell Vostro 3750
Ubuntu 13.04 - Gambas 3.4.1
spheris#3 Posté le 19/2/2011 à 17:55:00
loki,
personnellement, je ne suis pas très à l'aise avec les tableaux.
Mais je compte bien potasser le truc.
;) ;)
Prokopy#4 Posté le 19/2/2011 à 20:21:00
Kinder PinguiLoki,

La variable que tu mets juste après le For Each est censée être une variable temporaire, elle change à chaque tour de boucle. C'est donc normal que tu ne voies que le dernier élément.

Utilise une variable temporaire à la place, puis ajoute le contenu à ton TextArea dans la boucle :

1
DIM stest1 AS NEW STRING[2, 2] DIM stemp AS STRING stest1[0, 0] = "2" stest1[0, 1] = "3" stest1[1, 0] = "4" stest1[1, 1] = "5" FOR EACH stemp IN stest1 TextArea1.Text &= stemp NEXT


L'opérateur &= est un raccourci pour concaténer (= assembler) deux variables de texte.
L'équivalent long de cet opérateur serait :

1
TextArea1.Text = TextArea1.Text & stemp


Comme tu vois, c'est un peu répétitif. Note aussi que ce raccourci fonctionne aussi avec les opérateurs +, -, * et /. ;)

Bonne soirée. :)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
loki#5 Posté le 20/2/2011 à 10:56:00
Prokopy, c'etait un example le '5', j'ai testé aussi la solution que tu donne mais ca affiche tous sur une ligne ;) d'où le 'stemp1' déclaré...

moi je cherchai a simplifier ca:

1
DIM stest1 AS NEW STRING[2, 2] DIM iBoucle1, iBoucle2 AS INTEGER stest1[0, 0] = "2" stest1[0, 1] = "3" stest1[1, 0] = "4" stest1[1, 1] = "5"FOR iBoucle1 = 0 TO 1FOR iBoucle2 = 0 TO 1 TextArea1.Text &= stest1[iBoucle1, iBoucle2] & " "NextTextArea1.Text &= "\n"NEXT


faisant des programmes de statistiques les variables deviennent vite énormes et les boucles prennent un certain temps, comme on peut faire

1
TextArea1.Text = mavariable


je cherchai a faire

1
TextArea1.Text = mavariable[][]


mais c'est pas aussi simple 8)
Dell Vostro 3750
Ubuntu 13.04 - Gambas 3.4.1
Jack#6 Posté le 20/2/2011 à 11:19:00
il faut mettre un retour chariot à chaque ligne.

stest1[0, 0] = "2"
stest1[0, 1] = "3"
stest1[1, 0] = "4"
stest1[1, 1] = "5"
FOR EACH stemp IN stest1
TextArea1.Text &= stemp & "\n"
NEXT
Pour un code démocratique nationalisons Gambas.
loki#7 Posté le 21/2/2011 à 09:28:00
jack le "\n" fait tous afficher sur une colonne, donc pas bon...
Dell Vostro 3750
Ubuntu 13.04 - Gambas 3.4.1
Prokopy#8 Posté le 21/2/2011 à 11:34:00
Kinder Pingui

1
DIM stest1 AS NEW STRING[2, 2] DIM iBoucle1, iBoucle2 AS INTEGER stest1[0, 0] = "2" stest1[0, 1] = "3" stest1[1, 0] = "4" stest1[1, 1] = "5"FOR iBoucle1 = 0 TO 1FOR iBoucle2 = 0 TO 1 TextArea1.Text &= stest1[iBoucle1, iBoucle2] & " "NextTextArea1.Text &= "\n"NEXT



Je ne connais pas de manière de simplifier ça comme tu le proposes, désolé. Il y a à certains moments dans la programmation où tout ne se fait pas tout seul. Sinon c'est pas marrant. ;)
Si c'est seulement une question de "taille de code", tu peux créer une fonction à part qui te traite ton tableau et qui te retourne le texte correspondant.
Juste une question, quelle version de Gambas utilises-tu ? Les tableaux 2D sont plus simples à utiliser dans Gambas 3. :)

Une dernière chose, si tu souhaites beaucoup utiliser et afficher des tableaux dans ton programme, utilise un GridView qui est plus adapté. D'ailleurs, c'est aussi plus simple de définir son contenu grâce à l'évènement Data :

1
'Code de ton form Gambas avec GridView1 dessusPrivate monTableau As New String[2,2]Public Sub _new() GridView1.Rows.Count = 2 GridView1.Columns = 2 monTableau[0,0] = "Salut" monTableau[0,1] = "les" monTableau[1,0] = "gens" monTableau[1,1] = "!!!"EndPublic Sub GridView1_Data(Row As Integer, Column As Integer) GridView1.Data.Text = monTableau[Row, Column]End


Super pratique ! :)

(http://gambasdoc.org/help/comp/gb.qt/gridview?fr)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
loki#9 Posté le 21/2/2011 à 12:21:00
slt,

J'utilise des 'GridWiew' mais j'ai d'autres données que j'affiche dans mon 'TextAera' donc c'est dans ce cas pas pratique ;)

En faite l'idée de simplifier cette affichage vient que mes variables sont crées a la volée et que les lignes et les colonnes varient constamment, c'est pourquoi j'ai cherché quelque chose de plus simple pour les afficher.

J'utilise bien gambas3 :D
Dell Vostro 3750
Ubuntu 13.04 - Gambas 3.4.1
1