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 :
Mais bien sur sa marche pas il me dit que alphab n'existe pas dans la structure (logique)
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
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

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 :
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.
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

Publié : mar. 25/juil./2006 23:11
par Backup
rien n'empeche de faire
a la place de
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 !!

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

Publié : mer. 26/juil./2006 0:38
par Backup
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

)
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
sinon j'essai d'utiliser des noms tres explicite (meme si long)
colonne.l , ennemi.w, variablequifaittoutsauter=5 ect...

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
s'il vous plait faites
Merci

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
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
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" !!
mais oui
"chacun fait,fait,fait s'qui lui plait,plait,plait " 
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
Dri
