Problème avec un tableau

Sujets variés concernant le développement en PureBasic
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Problème avec un tableau

Message 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
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message 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))
"Qui baise trop bouffe un poil." P. Desproges
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message 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.
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Tu pourrais montrer un bout de code car j'ai toujours rien compris Image
"Qui baise trop bouffe un poil." P. Desproges
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message 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
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message 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)
"Qui baise trop bouffe un poil." P. Desproges
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ok merci je regarderai a sa demain car aujourd'hui je capte rien a rien :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Heureusement que j'ai pas utilisé la notation hongroise Image
"Qui baise trop bouffe un poil." P. Desproges
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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:
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message 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é.
"Qui baise trop bouffe un poil." P. Desproges
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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.
Image
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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:
Répondre