12 | |||||
Auteur | Messages | ||||
---|---|---|---|---|---|
gambix | #16 Posté le 14/1/2010 à 18:25:00 | ||||
Faire simple ! | je croit que tu n'a pas bien compris comment fonctionait un tableau la ... Quand tu fait tableau[8,8,8], ça ne veut pas dire que tu a 3 string de 8 caractère. !!! ça veut dire que tu a 8 X 8 X 8 string a disposition ! Pour stocker les valeur dot tu a besoin tu as besoint d'un tableau de 60 X 3 string par exemple 60 est le nombre de ligne, 3 est le nombre de chaines ! (nom,prénom,adresse) Mais comme ce système est un peu trop rigide , voici comment faire : 'Un tableau d'objet pour stocker les tableau de chaine Dim aTable as New Object[] 'Un tableau de chaine dim aString as string[] Dim s as string 'Pour chaque ligne du fichier For each s in split(file.load("myfile"), "\n")) 'Eclater les données séparée par une virgule 'et les stocker dans un tableau de chaine aString = split(s) ajouter ce tableau de chaine au tableau d'ojet aTabble.Add(aString) Next maintenant le contenu prénom de la deuxième ligne Print aTable[1][1] Simple ? encore autrement Créer une classe dedans : 'CMyClass PUBLIC Nom as String PUBLIC Prénom as String Public Adresse as string dans le formulaire Public sub GetFile() dim hMyClass as CMyClass Dim aStr as String[] Dim aObj as New Object[] For each s in split(file.load("myfile"), "\n") hMyClass = New CMyClass aStr = split(s) hMyClass.Nom = aStr[0] hMyClass.Prenom = aStr[1] hMyClass.Adresse = aStr[2] next Print aObj[2].Prenom end Moins de texte dans une signature c'est agrandir son espace. | ||||
Foromus | #17 Posté le 29/1/2010 à 11:39:00 | ||||
je croit que tu n'a pas bien compris comment fonctionait un tableau la ... Vous êtes gentil quand même ! Bon, je vais voir ce que je peux faire. Merci beaucoup. | |||||
Foromus | #18 Posté le 29/1/2010 à 14:48:00 | ||||
Pour rester sérieux, j'explique - enfin, j'essaie : J'ai 6 valeurs à stocker. Je pensais utiliser un tableau[6]. Je souhaite pouvoir utiliser une valeur quelconque, par exemple tableau[4], à n'importe quel endroit dans le code sur ma Form. Si je déclare en début : Public tableau[6] As Integer, c'est refusé. Si je déclare en début : Dim tableau[6] As Integer, c'est refusé (là, je sais pourquoi) Si je déclare en début : PUBLIC tableau AS NEW Integer[6], c'est accepté. Mais je ne sais pas utiliser par la suite : Print tableau[6], par exemple, me donne une erreur. NB : J'ai utilisé des dizaines de tableaux en VB, même à 3 dimensions, je n'ai jamais rencontré un seul souci. Là, ce n'est pas la même chose... | |||||
micio | #19 Posté le 29/1/2010 à 15:16:00 | ||||
Voila qui devrait fonctionner.
| |||||
Foromus | #20 Posté le 29/1/2010 à 15:44:00 | ||||
Désolé, ça n'a pas l'air de coller. Dans mon cas, c'est déclaré Integer, ce qui ne devrait pas changer grand chose. La déclaration est bien acceptée (j'avais déjà essayé de mettre la valeur après le type), mais c'est à la première lecture du code que ça coince . En fait, c'est de la syntaxe car je travaille sur une autre feuille que celle de lancement, et l'erreur apparaît, d'emblée, avant même que le programme se lance. Je suppose qu'au lancement, Gambas parcourt le code à la recherche d'une erreur de déclaration, et ce, sur toutes les feuilles. J'ai tenté de renseigner les valeurs - elles sont forcément nulles au départ, mais rien n'y fait. Et pire, je suis certain de buter sur une connerie, un détail, mais que je vois pas ou plus probablement, que je ne connais pas. Quant à l'aide sur les tableaux, je n'ai pas trouvé grand chose. | |||||
micio | #21 Posté le 29/1/2010 à 16:22:00 | ||||
Je ne suis pas sûr de bien comprendre votre demande ?
| |||||
Foromus | #22 Posté le 29/1/2010 à 16:55:00 | ||||
Effectivement, je me fais mal comprendre. Je résume ; Mon application a 4 forms, pour l'instant (peu importe, 2, ce serait pareil) Au lancement, quand ça fonctionne, ma première feuille FMain, est normalement appellée, et fait ce qu'elle a à faire. Sur cette FMAin, il y a un bouton qui appelle une seconde feuille, càd que dans la Sub Bouton_Click, on a : Form2.Show Sur cette Form2, j'ai différentes choses des contrôles et du code dans la Form2.Class Comme la plupart des feuilles, cette Form2.Class commence par des déclarations, et ensuite par la Sub Form2_Open, soit : ' Gambas class file PUBLIC Nom AS String Public MaVariable As Integer Public Rang As Integer PUBLIC MonTablo AS Integer[6] PUBLIC SUB Form_Open() 'etc. Après, j'ai différentes interventions qui vont assigner des valeurs à Rang et à MaVariable. Ensuite, et un peu plus loin, j'ai une Sub qui va utiliser le tableau : Private Sub Copie() Montablo[Rang] = MaVariable ' Rang et MaVaraible sont déclarées plus haut, donc, accessibles End (Je rappelle que tout ça, c'est sur la Form2, appellée depuis la FMain de départ). Si je lance le programme, F5 ou le triangle, j'ai un message d'erreur instantané à la ligne ci-dessus, soit : Montablo[Rang] = MaVariable Le message d'erreur me dit : Pas assez d'arguments à Montablo à la ligne 16 dans Form2.Class. NB : J'ai bien essayé de mettre des chiffres à la place des variables pour essayer, mais c'est la même chose, ce qui me paraît logique. Voilà, j'espère avoir été plus clair, c'est vrai que les explications comme ça, en vrac, ce n'est pas forcément évident ! | |||||
jlouis | #23 Posté le 29/1/2010 à 17:13:00 | ||||
Bonsoir Foromus, je viens de tester le code...
Je ne pas d'erreur, mais plus haut j'ai vu que tu as déclaré un tableau PUBLIC tableau AS NEW Integer[6], c'est accepté. Mais je ne sais pas utiliser par la suite : Print tableau[6], par exemple, me donne une erreur. L'erreur est normal, tu dépasses la limite du tableau, dans ce cas tu peux appeler tableau [0-5] pas 6. J'espère que cela peux t'aider. | |||||
micio | #24 Posté le 29/1/2010 à 17:24:00 | ||||
Effectivement on déclare 6 éléments mais les indexes sont numéroté de 0 à 5 | |||||
jeanyvon | #25 Posté le 29/1/2010 à 17:29:00 | ||||
Gambas? Ma! Et gusto | Il n'y a pas que ça! Foromus écrit d'un coté : "Montableau" et de l'autre "MonTableau". Il faut peut être vérifier la syntaxe. JY Vieillir? On peut retarder mais pas y échapper! | ||||
Foromus | #26 Posté le 29/1/2010 à 17:30:00 | ||||
Là, je suis en train de devenir fou... Encore que... J'ai tapé le code de Jlouis dans une feuille toute neuve, et effectivement, ça marche. La question va donc être : pourquoi ça ne colle pas avec le reste ?... Bon, pour les index, c'est vrai que ça commence à zéro, mais comme ça ne m'arrange pas, je peux très bien déclarer 6 et ne pas me servir du zéro. Mais dans la déclaration simplifiée [6], est-ce que c'est de 0 à 5 ou de 0 à 6 ? Je vais voir ça ce soir, là, j'ai un peu mal à la tête.... | |||||
Foromus | #27 Posté le 29/1/2010 à 17:33:00 | ||||
Il est possible qu'il y ait des erreurs de syntaxe sur les billets du forum, mais dans mon code, je fais (très) attention... Mais c'est vrai que c'est vite arrivé. Je vais quand même re-vérifier. | |||||
Foromus | #28 Posté le 29/1/2010 à 19:04:00 | ||||
Je pense avoir trouvé, sans vraiment comprendre le pourquoi du comment... | |||||
12 |