Page 1 sur 2

Problème avec un tableau

Publié : mar. 25/juil./2006 20:30
par wolfjeremy
Salut,

J'ai un tableau, qui a une structure avec dedans chaque lettre de l'aphabet pour contenir un long.

J'esseye de recuperer le long de la lettre de l'alphabet spécifier qui se trouve dans la variable "alphab" mais sa ne marche pas, voici ce que sa donne :

Code : Tout sélectionner

tab(1)\alphab
Mais bien sur sa marche pas il me dit que alphab n'existe pas dans la structure (logique) :mad:

Comment je peut faire pour que sa marche ?

Merci d'avance pour votre réponse.

P.S.: je sais pas si c'est la chaleur mais bon lol

Publié : mar. 25/juil./2006 21:46
par KarLKoX
Je sais pas si j'ai compris mais voici ce que ça donnerais :

Code : Tout sélectionner

Structure alphabet
  lettre.l
EndStructure

Global Dim alpha.alphabet(26)

Procedure Alphabet_Init()
Protected counter.l

    For counter = 0 To 25
      alpha(counter)\lettre = 65 + counter
    Next
    
EndProcedure

Procedure Alphabet_getLettre(index.l)
  ProcedureReturn alpha(index)\lettre
EndProcedure

Alphabet_Init()
alphab = 0    ; 0 = A
Debug Chr(Alphabet_getLettre(alphab))

Publié : mar. 25/juil./2006 21:52
par wolfjeremy
Non a mon avis ta pas compris :wink:

Le seul problème que j'ai c'est l'histoire de la variable "alphab" que je met dans "tab(1)\alphab". Et "alphab" contient une lettre de l'alphabet.
Mais PB crois que je doit rechercher alphab dans la structure, alors qu'il faut rechercher la valeur de alphab qui est en faite une lettre de l'alphabet.

Publié : mar. 25/juil./2006 22:01
par KarLKoX
Tu pourrais montrer un bout de code car j'ai toujours rien compris Image

Publié : mar. 25/juil./2006 22:07
par wolfjeremy
Ma structure :

Code : Tout sélectionner

Structure alpha
a.l
b.l
c.l
d.l
e.l
f.l
g.l
h.l
i.l
j.l
k.l 
l.l
m.l
n.l
o.l
p.l
q.l
r.l
s.l
t.l
u.l
v.l
w.l
x.l
y.l
z.l
EndStructure
J'y associe un tableau :

Code : Tout sélectionner

Dim tab.alpha(1)
Je stoque dans chaque lettre une valeur.

Ensuite je veux récup la valeur de la lettre, mais pour sa je passe par une chaine de carractère (variable alphab), qui contient la lettre a afficher sa valeur associé dans la structure.

Code : Tout sélectionner

tab(1)\alphab

Publié : mar. 25/juil./2006 22:13
par KarLKoX

Code : Tout sélectionner

Structure alpha
a.l
b.l
c.l
d.l
e.l
f.l
g.l
h.l
i.l
j.l
k.l
l.l
m.l
n.l
o.l
p.l
q.l
r.l
s.l
t.l
u.l
v.l
w.l
x.l
y.l
z.l
EndStructure

Global Dim tab.alpha(1)

Procedure Alphabet_Init()
Protected counter.l, *ptr.Long

  *ptr = tab(1)
  For counter = 0 To 25
    *ptr\l = counter
    *ptr + SizeOf(long)
  Next
  
EndProcedure

Procedure Alphabet_getValue(index.l)
Protected counter.l, *ptr.Long

  *ptr = tab(1)
  *ptr + (index*SizeOf(Long))
  ProcedureReturn *ptr\l
  
EndProcedure

Alphabet_Init()
alphab = 12 
Debug Alphabet_getValue(alphab)

Publié : mar. 25/juil./2006 22:17
par wolfjeremy
Ok merci je regarderai a sa demain car aujourd'hui je capte rien a rien :D

Publié : mar. 25/juil./2006 23:11
par Backup
rien n'empeche de faire

Code : Tout sélectionner

Global Dim alpha.alpha(1) 
a la place de

Code : Tout sélectionner

Global Dim tab.alpha(1) 
et partout ou KarLKoX utilise le nom "tab" tu utilise "alpha"

Code : Tout sélectionner

Structure alpha
  a.l
  b.l
  c.l
  d.l
  e.l
  f.l
  g.l
  h.l
  i.l
  j.l
  k.l
  l.l
  m.l
  n.l
  o.l
  P.l
  q.l
  r.l
  s.l
  t.l
  u.l
  v.l
  w.l
  x.l
  y.l
  z.l
EndStructure

Global Dim alpha.alpha(1)

Procedure Alphabet_Init()
  Protected counter.l, *ptr.Long
  
  *ptr = alpha(1)
  For counter = 0 To 25
    *ptr\l = counter
    *ptr + SizeOf(Long)
  Next
  
EndProcedure

Procedure Alphabet_getValue(index.l)
  Protected counter.l, *ptr.Long
  
  *ptr = alpha(1)
  *ptr + (index*SizeOf(Long))
  ProcedureReturn *ptr\l
  
EndProcedure

Alphabet_Init()
alphab = 12
Debug Alphabet_getValue(alphab) 




j'ai jamais compris pourquoi vous creez un nom suplementaire
pour designer une structure , je trouve que ça complique inutilement pour rien !! :D

Publié : mar. 25/juil./2006 23:26
par KarLKoX
Heureusement que j'ai pas utilisé la notation hongroise Image

Publié : mer. 26/juil./2006 0:38
par Backup
KarLKoX a écrit :Heureusement que j'ai pas utilisé la notation hongroise Image
heu c'est quoi la notation hongroise 8O 8O :lol:

Publié : mer. 26/juil./2006 9:11
par KarLKoX
Ca : certains aiment, d'autres pas, perso, je trouve que ça clarifie pas mal les variables et donc le code une fois qu'on y est habitué.

Publié : mer. 26/juil./2006 9:35
par Backup
bah ! j'utilise le typage tout au long de mes listing en principe

un "a.l" restera un "a.l" ecris comme ça jusqu'a la fin (sauf oublie :D)

j'ai une technique qui ressemble a ça
lorsque j'ai besoin d'une variable drapeau a court terme

(dans une boucle, procedure, petite portion de 10 ligne max)
j'utilise un nom de variable qui veut rien dire comme oiyui.l=1
comme ça je sais que ce "oiyui" sert juste dans le coin :D

sinon j'essai d'utiliser des noms tres explicite (meme si long)

colonne.l , ennemi.w, variablequifaittoutsauter=5 ect... :D
les for-next j'utilise pratiquement toujour "i" par defaut
sauf lorsque je veux que ce soit explicite For pas =0 to 255
et j'ECRIS TOUJOURS le nom de la variable dans le next !!!

NEXT pas

car j'ai remarqué que beaucoup d'entre vous ne mette plus rien dans le next genre

Code : Tout sélectionner

for t=1 to 25
    for y=0 to 50
    next 
next 
s'il vous plait faites

Code : Tout sélectionner

for t=1 to 25
    for y=0 to 50
    next y
next t
Merci :D

Publié : mer. 26/juil./2006 12:44
par Flype
s'il vous plait faites
Code:

for t=1 to 25
for y=0 to 50
next y
next t
pourquoi ? chacun fait ce qu'il veut :D

perso je le mets jamais sauf dans les cas où çà s'imbrique sur 3 ou 4 niveaux mais c'est rare.

par contre la notation hongroise je l'utilise déjà au taf
pour des soucis de lisibilité pour mes collègues.

Publié : mer. 26/juil./2006 12:52
par Backup
Flype a écrit :
s'il vous plait faites
Code:

for t=1 to 25
for y=0 to 50
next y
next t
pourquoi ? chacun fait ce qu'il veut :D
oui mais c'est pas tres "ecole" et lorsqu'on essaie de comprendre
un code avec plusieurs boucles imbriqué ou meme une seul mais longue
en nombre de ligne, on ne sait plus a quoi correspond ce "Next" qui traine
je ne comprends pas que Fred est autorisé cette "oublie" !! 8O

mais oui "chacun fait,fait,fait s'qui lui plait,plait,plait " :D

Publié : mer. 26/juil./2006 18:32
par Dr. Dri
Flype a écrit :perso je le mets jamais
je viens de le découvrir moi, je mettais un Next tout seul juste pour les ForEach et maintenant j'ai envie de passer du côté obscur :lol:

Dri :drinking: