Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1056 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  TABLEAU DYNAMIQUE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

TABLEAU DYNAMIQUE

n°226038
Argale
Posté le 10-10-2002 à 10:05:42  profilanswer
 

Dim Essai()
ReDim Essai(0 To 4, 0 To 2)
ReDim Preserve Essai(0 To 10, 0 To 2)
 
 
==> Indice hors plage (9)
 
Voila je suis en train de tester VB6 et en tant que novice
je rencontre des problèmes qq1 pourrait il m'aider ??
 
 

mood
Publicité
Posté le 10-10-2002 à 10:05:42  profilanswer
 

n°226052
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-10-2002 à 10:19:11  profilanswer
 

Essai est un tableau de quoi ??
Il serait peut etre bien d'indiquer son type !
 
Dim Essai(10) as Integer, par exemple, pour un tableau de 10 integer
 
Et vérifie la syntaxe de Redim !! Tu t'es loupé royalement !
 
http://msdn.microsoft.com/library/ [...] mReDim.asp

n°226084
Argale
Posté le 10-10-2002 à 11:13:50  profilanswer
 

Dans mes tests g declare le type de variable ... et a voir sur MSDN je voa pas ou g fe d'erreur ....... tout les test kil montre je lé ai testé ....

n°226085
Argale
Posté le 10-10-2002 à 11:15:24  profilanswer
 

D'ailleurs g oublie de preciser ke si je declarer le typez de Var il me met tableau deja redimmensionné !

n°226091
Argale
Posté le 10-10-2002 à 11:23:37  profilanswer
 

Il apparait que sa ne fonctionne pas lorsque g deux dimensions ou plus a mon tableau ...

n°226229
Carbon_14
Posté le 10-10-2002 à 15:27:31  profilanswer
 

Je sais plus trop les nuances (je viens de regarder sous QBASIC de NT4 !) pour ça, mais on peut avoir plus d'une dimension.
Je me demande si la déclaration préalable est bonne, car elle sous entend (?) qu'il n'y a qu'une dim (??).
Par défaut, il me semble que BASIC autorise des tableaux "non déclarés" à 9 cases.
 
Pourquoi ne pas essayer
 
Dim Essai%(1 to 1, 1 to 1) (Dim Essai%(,) pas sûr que ça marche :D)
ReDim Essai%(0 To 4, 0 To 2)  
ReDim Preserve Essai%(0 To 10, 0 To 2)  
 
Sans garantie.
 
Quand on fait Dim Essai%(), on utilise ensuite un tableau mono_dimensionnel. Suis pas sur que ça gène :).
 
Question idiote : le Dim initial est fait juste avant ? En fait quelle est la PORTEE de la variable Essai%() ??
Si mal placée, ou mal définie (Global Essai%() as integer), VB croit peut-être que c'est un nouveau Essai%() local ?

n°226234
__Oto__
I'm Watching U
Posté le 10-10-2002 à 15:51:00  profilanswer
 

Argale a écrit a écrit :

Dim Essai()
ReDim Essai(0 To 4, 0 To 2)
ReDim Preserve Essai(0 To 10, 0 To 2)
 
 
==> Indice hors plage (9)
 
Voila je suis en train de tester VB6 et en tant que novice
je rencontre des problèmes qq1 pourrait il m'aider ??
 




 
skoa Preserve ?? ca te sert a koi
 
sinon si tu fais juste ca ca march :
 

Code :
  1. dim toto() 'declaration du tabeau
  2. redim toto (0 to 10 ,0 to 5)

n°226266
Carbon_14
Posté le 10-10-2002 à 16:31:21  profilanswer
 

Preserve sert à préserver les données déja présentes dans le tableau quand il était plus petit.
 
Redim alloue nouvelle mémoire pour les données et les initialise, Préserve fait idem sauf qu'il les conserve (comme realloc() en C).

n°226298
Argale
Posté le 10-10-2002 à 16:56:47  profilanswer
 

Merci de vos reponses.. mais je n'y arrive pas ....
G essayer de declarer dans le DIM initial de preciser une taille a 2 dimension mais rien ......
Kan o preserve je suis oblige de le mettre ...
En fait je m'amuse a faire un analyser de LOG Q3 et donc vu que le nombre de joueur n'est pas forcement le meme je suis oblige de redimmensionner ....
 
Sauf si j'utiliser un SWAP mais bon sa me fe chier ... je voulé faire ce prg en VB histoire de tester et la je me retrouve bloquer pour un connerie...

n°226370
Carbon_14
Posté le 10-10-2002 à 20:38:34  profilanswer
 

Je vais essayer tout à l'heure sous VB3 sous Windows 3.11 (16 bits).
Si ça marche ici, on essaiera de voir le "détail" du code voir si y a pas astuce. Ca tient des fois à quasi-rien.
Pb : VB, je m'y remet car passé au C.
 
La déclaration de Essai() se fait dans un fichier .BAS, .FRM ?
ReDim Essai(0 TO 4, 0 TO 2) dans le même BAS, FRM ?
ReDim Preserve dans le même FRM, BAS ?
 
Nb : je ne sais plus si sous VB on peut déclarer/utiliser (car la déclaration préalable n'est malheureusement pas obligatoire) des variables de même nom mais de nature différente (genre Essai%() Essai!(), Essai() en variant (beurk), Essai&(), etc..). Dans ce cas là, on peut des fois se tromper d'objet.  
Y a option "Explicit" qui permet à VB de rouspéter quand on utilise une varaible qui n'a pas de déclaration préalable qq part.
 
Y a pas d'ERASE Essai qq part (la fonction qui permet de libérer la mémoire en effaçant le tableau) ?

mood
Publicité
Posté le 10-10-2002 à 20:38:34  profilanswer
 

n°226401
Carbon_14
Posté le 10-10-2002 à 21:43:49  profilanswer
 

Le serveur cafouille ! Message perdu.
 
Pour pas tout retaper :
Ai essayé code sous VB3/Win3.11. Ca cafouille aussi.
On ne peut allonger/modifier QUE la DERNIERE dimension. (Preserve ou non)  
 
Redim Essai(0 to 2, 0 TO 10)
Redim Essai(0 to 2, 0 TO 100)  bon
Redim Essai(0 to 2, 0 TO 150)  bon
 
Redim Essai(0 to X, 0 TO 10) PAS BON
 
Je n'avais pas remarqué ou ai oublié.
 
Si seule une dim change, faut les inverser => ça marchera
Dim Essai()  
ReDim Essai(0 To 2, 0 To 4)  
ReDim Preserve Essai(0 To 2, 0 To 10)  TOUT BON
 
Sinon : lourd : faut sauver en copiant donnees dans tableau provisoire, recréer en l'agrandissant le tableau de travail, et recopier ce qu'il y avait avant et détruire le tableau provisoire...


Message édité par Carbon_14 le 10-10-2002 à 21:45:14
n°226559
Argale
Posté le 11-10-2002 à 09:23:40  profilanswer
 

Je teste tout ça et je te dis koi ...  
C tres pro de ta part de me repondre !!!

n°226586
__Oto__
I'm Watching U
Posté le 11-10-2002 à 09:51:18  profilanswer
 

ca ca marche :
 

Code :
  1. Dim toto()
  2. ReDim toto(1 To 10)
  3. ReDim Preserve toto(1 To 20)


 
mais avec un preserve tu ne peut modifier le nombre de dimension d'un tablo

n°226633
Argale
Posté le 11-10-2002 à 11:00:57  profilanswer
 

Effectivement maintenant sa fonctionne g fe qqc dy style :
ReDim Joueur(0 To 2, 0 To 0) As String
REdim Joueur(0 to 2, 0 to TAILLE)... etc...
 
faudra que je me penche sur le pb de l'utilisation du redim en declaration de var. mais pour l'instant sa fonctionne correctement ... donc on en pe ny changer la dimension d'un tableau et on ne peut ke modifier la derniere dimension de ce tableau ...  
 
Ence ki me concerne c tout bon g inverse les dimensions de mon tablo ke je redimmensionne comme je ve ... :bounce:  
 
Bientot mon pti soft sera pres une fois ke j'aure dechiffre  le games.log   :gun:

n°226676
Carbon_14
Posté le 11-10-2002 à 12:56:44  profilanswer
 

C'est pas pro, ça me chagrinait que ça coince, et j'ai ainsi découvert que ReDim avait des limitations. Je l'ai signalé à un collègue qui fait du QBASIC pr ses manips :(.
 
Si on a plus d'une dimension, si on gère ça soi-même en C, faut bien aussi se discipliner. Si on veut augmenter chaque dimension, c'est pas direct, faut jongler pas mal en réallocation/copie/.. C'est un peu normal que ce soit comme ça...
 
Une solution "lourde" qu'on pouvait utiliser dasn les temps quand dynamique pas possible : prévoir plus que besoin (mais ça encombre mémoire), comme ça on est tranquille. Le pb est de savoir quel est le maxi.

n°226762
Argale
Posté le 11-10-2002 à 15:04:12  profilanswer
 

si j'avé sur j'auré fait un tableau de liste chainées mais le but ct de voir les fonctionnalités de VB ... voila ki est chose faite ...

n°226804
Carbon_14
Posté le 11-10-2002 à 15:38:12  profilanswer
 

Ce qu'il faut est de savoir ce qu'on peut tirer des langages, et des besoins.
 
J'avais besoin de générer 500 feuilles html l'autre jour pour une "visionneuse" de photos. J'ai sauté sur QBASIC pour "torcher" ça (24 heures), vu que c'était simple à gérer, et que de gagner deux secondes ne méritait pas de le coder en C.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  TABLEAU DYNAMIQUE

 

Sujets relatifs
array_push( ) et tableau associatif...[CSS] couleur de bordure d'un tableau
probleme avec un tableau a deux dimensionsChanger la couleur d'un tableau
[C++] Nombre d'éléments d'un tableau dynamique ???[JavaScript (Haut niveau, enfin je crois)] Tableau Dynamique
Problème avec tableau dynamique[Delphi] tableau dynamique d objet
VB : tableau dynamiqueMise à jour automatique de tableau dynamique ??
Plus de sujets relatifs à : TABLEAU DYNAMIQUE


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR