Page 1 sur 2

Problème Dim

Publié : mer. 04/avr./2012 9:11
par dayvid
Salut

Ya un soucis avec Dim ici dans ce code, ce fichue debuger pète une durite :?

Code : Tout sélectionner

NombreDimentionTableau = 2 ; Sert juste à savoir le nombre de dimention qu'a le tableau

Macro IniMonTableauA(NombreDimentionTableau, NombreColone, NombreLign, NombreProfondeur)
  
  If DimMonTableau(NombreDimentionTableau, NombreColone, NombreLign, NombreProfondeur) = 1
    Dim MonTableau.a(NombreColone) ; Juste des colonnes
    
  ElseIf DimMonTableau(NombreDimentionTableau, NombreColone, NombreLign, NombreProfondeur) = 2
    Dim MonTableau.a(NombreColone, NombreLigne) ; Des colonnes et des lignes
    
  ElseIf DimMonTableau(NombreDimentionTableau, NombreColone, NombreLign, NombreProfondeur) = 3
    Dim MonTableau.a(NombreColone, NombreLigne, NombreProfondeur) ; Des colonnes, des lignes et une profondeur
    
  EndIf
  
EndMacro

Procedure.l DimMonTableau(NombreDimentionTableau, NombreColone, NombreLign, NombreProfondeur)
  Select NombreDimentionTableau
      
    Case 1
      
      If NombreColone = 0
        NombreColone = 1
      EndIf
      
      DimMonTableau = 1
      
    Case 2
      
      If NombreColone = 0
        NombreColone = 1
      EndIf
      
      If NombreLigne = 0
        NombreLigne = 1
      EndIf
      
      DimMonTableau = 2
      
    Case 3
      
      If NombreColone = 0
        NombreColone = 1
      EndIf
      
      If NombreLigne = 0
        NombreLigne = 1
      EndIf
      
      If NombreProfondeur = 0
        NombreProfondeur = 1
      EndIf
      
      DimMonTableau = 3
      
    Default
      
      If NombreColone = 0
        NombreColone = 1
      EndIf
      
      DimMonTableau = 1
      
  EndSelect
  
  ProcedureReturn DimMonTableau
EndProcedure

Procedure Tableau(Type$ = ".l", NombreDimentionTableau = 1, NombreColone = 1, NombreLigne = 0, NombreProfondeur = 0)
  
  Select Type$
      
    Case ".a"
      IniMonTableauA(NombreDimentionTableau, NombreColone, NombreLign, NombreProfondeur)
      
    Case ".b"
      
    Case ".c"
      
    Case ".d"
      
    Case ".f"
      
    Case ".i"
      
    Case ".l"
      
    Case ".q"
      
    Case ".s"
      
    Default
      Type$ = ".l"
      
  EndSelect
  
EndProcedure
Pourquoi il m'ennuie avec ça puisque le tableau je l'initialise qu'une seulle fois :?
Ya t-il moyen de contourner ce problème, une idée, une tapette, une baffe, une tarte, fin n'importe quoi :lol:

Note: Ceci n'est qu'un essaie, j'ai coder ça juste pour passer le temps et essayer un truc !

Re: Problème Dim

Publié : mer. 04/avr./2012 11:02
par Mesa
C'est le même coup qu'avec la map du post de Blendman http://www.purebasic.fr/french/viewtopi ... =1&t=12689

Je pense que c'est l’éditeur de PB qui croit que l'on veut déclarer le tableau plusieurs fois.
Faudrait demander à Fred.

Mesa.

Re: Problème Dim

Publié : mer. 04/avr./2012 13:18
par dayvid
C'est vraiment très problèmatique quand même :(

Re: Problème Dim

Publié : mer. 04/avr./2012 14:05
par Le Soldat Inconnu
avec jaPBe, aucune erreur, c'est quoi le soucis ?

Re: Problème Dim

Publié : mer. 04/avr./2012 14:35
par dayvid
Le debuger pète une durite car il crois que l'on crée plusieur fois le même tableau :?

Re: Problème Dim

Publié : mer. 04/avr./2012 17:52
par Backup
avec EPB j'ai une erreur de syntaxe ligne 4

sur la ligne 75

Code : Tout sélectionner

 Case ".a"
      IniMonTableauA(NombreDimentionTableau, NombreColone, NombreLign, NombreProfondeur)
message de l'erreur
"5- Erreur de syntaxe at line 4 of the expanded Macro (Macro.out)"

Re: Problème Dim

Publié : mer. 04/avr./2012 18:12
par nico
Ben, c'est normal, on ne peut pas créer dynamiquement des tableaux, des constantes, des variables etc...

Re: Problème Dim

Publié : mer. 04/avr./2012 18:18
par Backup
bon :) EPB marche mieux que Japbe si j'en crois Le Soldat inconnu :lol:

Re: Problème Dim

Publié : jeu. 05/avr./2012 23:16
par Le Soldat Inconnu
non, j'ai l'erreur aussi effectivement, z'avais pas tout compris.

Comme dis nico,ça ne peut pas fonctionné, ton affaire

Re: Problème Dim

Publié : ven. 06/avr./2012 8:45
par Fig
Il faut changer ton paradigme de programmation, David.
On ne programme pas de cette manière avec PB.

Re: Problème Dim

Publié : ven. 06/avr./2012 9:41
par dayvid
Oui mais pourquoi on pourais pas crée des tableaux au autre dinamiquement, c'est dommage ça :(
Comment puis-je faire autrement svp ?!

Re: Problème Dim

Publié : sam. 07/avr./2012 14:13
par Fig
Je ne sais pas ce que tu veux faire au final (ce n'est pas trivial quand on regarde ton code !!), mais en admettant que tu veuille vraiment faire ce que tu fais, je procéderai ainsi:

au début du programme, tu créé un tableau avec le maximum de dimension que tu souhaites:

dim montableau.a(1,1,1)

ensuite,
tu le redimensionne en fonction de tes besoins avec

redim montableau(colonne,ligne,profondeur)


M'enfin, déja si on savait ce que tu veux faire, ça serait plus simple ;)

Re: Problème Dim

Publié : sam. 07/avr./2012 14:17
par graph100
Fig a écrit :Je ne sais pas ce que tu veux faire au final (ce n'est pas trivial quand on regarde ton code !!), mais en admettant que tu veuille vraiment faire ce que tu fais
:mrgreen: :mrgreen: :mrgreen: :lol:

je suis mort de rire...

Re: Problème Dim

Publié : sam. 07/avr./2012 15:42
par GallyHC
Bonjour,

J'avous ne pas tout avoir compris mais juste avec un :

Code : Tout sélectionner

Dim Machin.l(0)
ReDim Machin(100)
Ce ne serait pas plus simple? ton redim donne la taille en fonction des besoins ?

Cordialement,
GallyHC

J'utilise pas mal le Redim et cela fonctionne plutot bien, quand on ne fait pas d'erreur dans le code (ce qui m'est deja arrive) lol.

Re: Problème Dim

Publié : sam. 07/avr./2012 15:47
par dayvid
Un:

Dim MonTableau.Type$()

Serais bien je trouve, Type$ pourais être un ".l" par exemple ou ".a", etc. !