Page 1 sur 1

[Résolu]DisableDebugger et Index de Tableau Hors Limite

Publié : mer. 07/mars/2012 21:16
par Ganagyre
Bonjour.

Par habitude pendant les test de bouts de code je mets DisableDebugger en début de code.
La Cependant cela me donne une erreur : Index de Tableau Hors Limite en ligne 36.
Si j'active DisableDebugger apres la définition de variables en ligne 12, la aucun probléme cela marche ?

Pourquoi cela ?

Code : Tout sélectionner

;______________Si DisableDebugger actif en ligne 2 = Erreur en ligne 36
;DisableDebugger 
;__________________________ VARIABLES 
Colonnes.l = 50
Lignes.l = 200
jjj.l : ttt.l
un.l : deux.l : trois.l 
numeros.l = 0
;
; 50 Colonnes * CBN 3 = 19600 Possibilité
Global Dim Buffer3.l(19600,Lignes) ;
DisableDebugger 
;__________________________ 
For un      = 1        To Colonnes-2        
For deux    = un + 1   To Colonnes-1   
For trois   = deux + 1 To Colonnes    
  ;  
  numeros + 1 
  ;
  ;------------------ Remplissage BUFFER3 
  For jjj = 1 To Lignes 
  ;
  Buffer3(numeros,jjj) = numeros  
  ;      
  Next jjj    
  ;   
Next trois  
Next deux
Next un
;
EnableDebugger 
;
Debug "=================="
For ttt = 1 To Lignes
  Debug "Ligne = "+Str(ttt)
  Debug "Buffer 3  _Colonne 19600 =  "  +Str(Buffer3(19600,ttt)) ; Index de Tableau Hors Limite ?
Next ttt  

Merci pour toute information.

Re: DisableDebugger et Index de Tableau Hors Limite

Publié : mer. 07/mars/2012 21:30
par dayvid
Evidement :lol:

Mais ton programme ne fonctionnera pas comme il faut
le debugger traite ton code avent de le compiler donc si il trouve une erreur, c'est qu'il en a une
le debugger est là pour éviter que tu comprenne pas pourquoi ton programme plante
il t'informe sur le pourquoi du comment

Oui sa peut marcher si tu désactive le debugger mais sache que ton programme ne sera pas stable !
S’il dit qu'il y a une erreur, c'est qu'il en a une !

Maintenant désactiver le debugger est bien mais la seule chose a quoi sa sert c'est améliorer la vitesse du code
mais une fois que tu compile ton code, celui ci n'est plus présent !

Il passe en revue ton code pour voir si ya pas d'erreur, c'est un genre de correcteur si tu veut :lol:

Si tu le désactive, il ne regarde plus si ton code est fonctionnel !
ça fait une couche en moins quoi !

Re: DisableDebugger et Index de Tableau Hors Limite

Publié : mer. 07/mars/2012 22:01
par Ar-S
La doc (dans DIM) dit : La vérification des accès à un tableau est effectuée uniquement quand le débogueur est activé.
Du coup si tu disable le debugger avant de déclarer ton tableau, ça chie, enfin je suppose que le problème vient de là.

Re: DisableDebugger et Index de Tableau Hors Limite

Publié : mer. 07/mars/2012 22:12
par dayvid
Bon sinon j'étais bon ou pas ?

Re: DisableDebugger et Index de Tableau Hors Limite

Publié : jeu. 08/mars/2012 0:00
par graph100
non tu n'etais pas bon, enfin, en partie, mais c'est mal expliqué, et la raison donnée n'est pas la bonne.

Pour répondre d'abord au problème principal, après avoir regardé un peu, et testé, déjà il n'y a pas d'erreur lorsque tu désactive le débuger avec le bouton (donc lorsque tu compiles ton executable) : et de toutes façon il n'y a pas d'erreur (il me semble) dans le code.

Donc le pb viens des commande EnableDebuger et DisableDebuger.
Pour trouver d'ou ca viens, j'ai regardé la liste des variables dans le menu de pb --> "Debugger" --> "voir les variables"

Or le tableau apparait avec une taille de (19600, -1), même si en réaliter il n'y a pas d'erreur, mais comme le débugger
vérifie les access avec les dimensions, il génère une erreur.

-> A mon avis c'est un bug. faut voir si ya des avis convergeant, puis poster sur le fofo anglais

Code : Tout sélectionner

; A executer avec le Debugger activé !!!!
DisableDebugger

un.l = 1
deux.l = 2
trois.l = 3

MessageRequester("", "trois = " + Str(trois))

Dim Tableau.l(10, trois)

MessageRequester("", "trois = " + Str(trois) + Chr(13) + "Dimension Tableau : " + Str(ArraySize(Tableau(), 1)) + "x" + Str(ArraySize(Tableau(), 2)))

Tableau(1, 1) = 2


EnableDebugger

trois = un + deux

; METTRE un point d'arret sur la ligne suivante, et aller voir dans le débugger la dimension du tableau :
; le débugger indique (10, -1)

MessageRequester("", "trois = " + Str(trois) + Chr(13) + "Dimension Tableau : " + Str(ArraySize(Tableau(), 1)) + "x" + Str(ArraySize(Tableau(), 2)))


Tableau(1, 1) = 2


MessageRequester("Fin", "test fini sans erreur")
ensuite, pour revenir à ma réponse, Davyid : lance PB, puis tape une commande avec une erreur de syntaxe. Déactive le débugger, et regarde si le code se compile. Tu auras ta réponse ;)

Le débugger lui, est actif après que l'exe soit compilé, il permet de vérifier les access mémoires par exemple, pour éviter de corrompre des zone mémoire qu'on n'a pas allouée. et aussi d'autre chose, mais c'est certainement marqué dans l'aide ou qq part sur le fofo

Re: DisableDebugger et Index de Tableau Hors Limite

Publié : jeu. 08/mars/2012 0:46
par dayvid
Bin alors corrigez moi !!!

Re: DisableDebugger et Index de Tableau Hors Limite

Publié : jeu. 08/mars/2012 0:48
par graph100
c'est ce que je viens de faire :lol:

Re: DisableDebugger et Index de Tableau Hors Limite

Publié : jeu. 08/mars/2012 1:40
par dayvid
A oui lol désoler :lol:
Merci pour ta correction !

Re: DisableDebugger et Index de Tableau Hors Limite

Publié : jeu. 08/mars/2012 10:44
par Ganagyre
Bonjour à tous.

Merci pour les commentaires et les infos.

D'origine le code fonctionne sans erreurs, DisableDebugger er EnableDebugger me servent à limiter le temps de calcul pendant les tests, surtout pour les boucles imbriquées, du moins dans certains cas, avant finalisation .

En utilisant DisableDebugger en début de code Test et trouver une erreur de dimensionnement ensuite, c'est surprenant.
En utilisant DisableDebugger apres le dimensionnement du tableau la cela fonctionne.

Idem sur l'exemple du code de graph100.
DisableDebugger en ligne 13 et cela fonctionne.

Bon on vas dire qu'il y à quand meme moyen que les codes en tests fonctionnent.
+

Re: [Résolu]DisableDebugger et Index de Tableau Hors Limite

Publié : jeu. 08/mars/2012 11:03
par Mesa
Même chose avec en plus, si on remplace Lignes.l par #Lignes, ça marche

ou bien si on ajoute en ligne 34 ReDim Buffer3(19600,Lignes), ça marche aussi.

Il y a donc bien un bug avec DisableDebugger et l'allocation mémoire du tableau avec une variable.

Mesa.

Re: [Résolu]DisableDebugger et Index de Tableau Hors Limite

Publié : jeu. 08/mars/2012 12:41
par graph100
ouaip. donc faut aller le signaler maintenant ;)