Page 1 sur 1

[Resolu] Problème avec un buffer

Publié : dim. 15/nov./2009 12:36
par deeph
Bonjour, toujours dans le cadre de mon éditeur de carte, j'essaie de stocker des données dans un buffer puis de les lires ensuite, sauf que bizarrement ça me renvoi toujours "2"... J'ai essayé de changer le type de la variable "element" mais ça ne change rien (pas plus que d'utiliser PokeL() et PeekL()).

Code : Tout sélectionner

Protected element.l
event()\moves_buffer = AllocateMemory(#MAX_MOVES) ; #MAX_MOVES=100
element = 0
Repeat
  SetGadgetState(#ListViewGadget, element)
  Select GetGadgetText(#ListViewGadget)
    Case "Haut"
      PokeB(event()\moves_buffer, 1) ; 0
    Case "Gauche"
      PokeB(event()\moves_buffer, 4) ; 3
    Case "Droite"
      PokeB(event()\moves_buffer, 2) ; 1
    Case "Bas"
      PokeB(event()\moves_buffer, 3) ; 2
  EndSelect
  element+1
Until element = CountGadgetItems(#ListViewGadget)

element = PeekB(event()\moves_buffer)-1
While element+1
  Select element
    Case 0
      AddGadgetItem(#ListViewGadget, -1, "Haut")
    Case 3
      AddGadgetItem(#ListViewGadget, -1, "Gauche")
    Case 1
      AddGadgetItem(#ListViewGadget, -1, "Droite")
    Case 2
      AddGadgetItem(#ListViewGadget, -1, "Bas")
  EndSelect
  element = PeekB(event()\moves_buffer)-1
  Debug(Str(element))
Wend
Quelqu'un voit-il où est le problème ?

Re: Problème avec un buffer

Publié : dim. 15/nov./2009 13:02
par f1roe
Il manque des éléments pour répondre a ta question...
Plus de code svp

Cordialement

Sébastien

Re: Problème avec un buffer

Publié : dim. 15/nov./2009 13:15
par deeph
Je vois pas trop ce qu'il manque... Enfaite le truc c'est que j'ajoute des éléments dans un ListViewGadget, et ensuite j'essaie de lire son contenu pour le transformer en 0 ("Haut"), 1 ("Droite"), 2 ("Bas") ou 3 ("Gauche").

Re: Problème avec un buffer

Publié : dim. 15/nov./2009 13:36
par Le psychopathe
C'est tout à fait normal : tu écris une valeur à la même adresse mémoire dans ta boucle.

event()\moves_buffer à toujours la même adresse ! Il faut rajouter +1 à chaque boucle

Code : Tout sélectionner

element = 0
Repeat
  SetGadgetState(#ListViewGadget, element)
  Select GetGadgetText(#ListViewGadget)
    Case "Haut"
      PokeB(event()\moves_buffer + element, 1) ; 0
    Case "Gauche"
      PokeB(event()\moves_buffer + element, 4) ; 3
    Case "Droite"
      PokeB(event()\moves_buffer + element, 2) ; 1
    Case "Bas"
      PokeB(event()\moves_buffer + element, 3) ; 2
  EndSelect
  element+1
Until element = CountGadgetItems(#ListViewGadget)

Re: Problème avec un buffer

Publié : dim. 15/nov./2009 14:38
par deeph
Rah merci :D

J'étais persuadé que ça fonctionnais comme ReadByte() et WriteByte() !