Gambas France BETA


Pas de compte ? Incription

éviter un plantage à cause de l'erreur ''depassement de tableau''

1
AuteurMessages
j0k3r#1 Posté le 1/11/2010 à 01:01:00
Bonjour,

Je voulais savoir s'il y avait un moyen de remédier à cette erreur avec une condition , etc. merci!

(Je suis sous gambas 3)
manu#2 Posté le 1/11/2010 à 08:49:00
Avec Gambas ca roule !Bonjour et bienvenu jok3r,

De quels tableaux parles tu ?

Je suppose que c'est d'un contrôle de type gridview ou columnview car une variable tableau ne devrais pas te renvoyer cette erreur puisqu'on défini juste le nombre de dimensions et non le nombre d’éléments ! Le nombre d’éléments augmente simplement avec la méthode .add.

Si il s'agit d'un controle, le seul moyen qui parais raisonnable, c'est de bien dimensionner ton tableau ! :). Peut tu nous préciser ce que tu souhaites faire car, là, comme ça, on peut pas beaucoup t'aider...

En attendant, tu peux lire le tuto de Prokopy sur les variables tableaux (entre autre) ICI

tu as egalement la doc : ICI

et enfin tu as déjà des topics sur les questions de tableaux. Tapes dans rechercher : Redimensionnement de tableau , Tableaux.

Voila en attendant, et merci de préciser ;)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
j0k3r#3 Posté le 1/11/2010 à 13:48:00
Merci Manu, en effet je n'ai pas été très précis, je m'en excuse.

Le tableau dont je parle est un Array(par exemple: Dim tableau As Array).
Cet array contient des données qui viennent de la fonction Split.

L'erreur apparaît à des lignes où j'ai des conditions IF par rapport à ce array.

Devrais-je utiliser String[] au lieu de array? Sachant que split renvoi en String les données.



Je regarde les liens que tu m'as fourni, merci!
manu#4 Posté le 1/11/2010 à 14:16:00
Avec Gambas ca roule !Si tu es sûr du type de tes données, oui utilise un tableau de type string[] , ce qui est effectivement le cas si elles proviennent d'une boucle qui coupe une chaîne de caractères.

Peux-tu nous montrer ta fonction qui pose problème? ce sera plus simple.
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
j0k3r#5 Posté le 1/11/2010 à 14:26:00
Juste pour vous mettre un peu dans le contexte, je programme un logiciel pour pouvoir controler un Scanner Uniden(Balayeur d'onde en francais)
Je sais mon code n'est pas tres propre, mais fonctionne tres bien a part le depassement de tableau:

1
base = Split(Rx, ",")IF base[0] == "VOL" AND base[1] <> "OK" THEN Dial1.value = base[1] ScaPanel.Send("SQL") EndifIf base[0] == "SQL" AND base[1] <> "OK" THEN Dial2.value = base[1] EndifIf base[0] == "STS" AND base[1] <> "ERR" ThenIf InStr(base[8], "1201") > 0 AND InStr(base[6], "UID") > 0 AND lastuid <> base[6]FMain.Addconvo(base[6], base[8])lastuid = base[6]base.ClearEndifEndif


Et ma declaration de tableau est un peu plus haut: Public Base As Array

Merci!
manu#6 Posté le 1/11/2010 à 18:57:00
Avec Gambas ca roule !ok,

C'est que ton tableau n'a pas neuf éléments, combien en a t il ?


Pour le savoir rajoute après ton split un :

Print base.count et regarde ta console pendant l’exécution.

et tu le sauras ;)

Je te rappelle que la première item du tableau a comme index 0, la seconde a pour index 1 etc....

Ton tableau est il censé changer de taille ou sera t il toujours de la même taille ? Si je comprends ton code sa taille est fixe non ?


Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
j0k3r#7 Posté le 3/11/2010 à 16:13:00
La taille varie de 2 a 23 environ

Cela dépend de quoi le balayeur me renvoi en retour

Je crois avoir trouvé un moyen de remédier à la situation...
Je fais un tableau pour chaque commande que je reçois, et je Split dans le tableau fait pour cette commande que j'ai reçu.

Je détecterai la commande avec Instr
manu#8 Posté le 3/11/2010 à 20:46:00
Avec Gambas ca roule !En tous cas ce qu'il faut retenir, c'est que cette erreur venait du fait que tu voulais lire un tableau pas a la bonne dimension.

Je n'ais pas saisi ce que tu compte faire mais tu peux très bien écrire dans ton tableau et le relire avec une boucle for each après, tout en utilisant des méthodes comme instr ou tout un tas d'autre d'ailleurs...
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
j0k3r#9 Posté le 4/11/2010 à 23:36:00
Merci beaucoup Manu,
je vien de réaliser le problème grâce aux trucs que tu m'as donné.

C'est bien`du au fait que je recherche dans le tableau quelque chose qui n'existe pas(ex: base[8] alors qu'il n'a que deux donné quand on fait base.count)

J'ai dons rajouté des conditions et je n'ai pas de probleme pour le moment encore avec les derniers j'Ai test j'Ai fait.
Bref je sais maintenant d'où vien exactement mon erreuir et je t'en remercie!!


A+



1