[Résolu] Probléme SetGadgetItemData

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

[Résolu] Probléme SetGadgetItemData

Message par JohnJohnsonSHERMAN »

Attention, vérifiez que vous n´etes ni drogué, ni alcoolisé avant de lire eci, la logique élémentaire n´y a plus cours...

SetGadgetItemData déconne dans une procédure d´un de mes programmes
exemple :

Code : Tout sélectionner

AddGadgetItem(#liste,-1,"Element de ma liste")
SetGadgetItemData(#liste,-1,CountGadgetItems(#liste))
;le tout répété un certain nombre de fois
devrait affecter la valeur personnalisée 1 au 1er élément de ma liste, 2 au 2é...
Et bien pas du tout!!!
Lorsque je fais GetGadgetItemData(#liste,[n´importe quel élément]) il me renvoie toujours 0, meme quand je n´avait pas affecté la valeur de CountGadgetItems, mais une constante comme 2 par exemple !
Troublant non?

Je vous met le code complet demain
Imaginez juste le truc : on lui affecte une valeur définie, et quand on la lui redemande, c´est devenu 0!!!
Dernière modification par JohnJohnsonSHERMAN le dim. 07/févr./2016 18:03, modifié 1 fois.
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Probléme SetGadgetItemData

Message par Anonyme2 »

Jamais vu de -1 comme 2ème paramètre pour SetGadgetItemData(#liste,-1,CountGadgetItems(#liste))

Lis la doc :mrgreen:

"Le premier élément commence à 0. "


Le code suivant devrait fonctionner en testant bien sur que la liste n'est pas vide.

Code : Tout sélectionner

SetGadgetItemData(#liste,CountGadgetItems(#liste)-1,CountGadgetItems(#liste))
Tu peux aussi utiliser une boucle for comme dans l'exemple de la doc PB
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Probléme SetGadgetItemData

Message par falsam »

JohnJohnsonSHERMAN a écrit :Attention, vérifiez que vous n´etes ni drogué, ni alcoolisé avant de lire eci, la logique élémentaire n´y a plus cours...
Commences par voir dans quel états tu erres ^^

Denis a raison.

:arrow: La syntaxe est SetGadgetItemData(#Gadget, Item, Value) Item doit être un numéro d'item valide. Le premier commence à 0.

Un exemple fonctionnel qui va affecté une valeur à chaque item du tableau à l'intérieur d'une boucle for ... next et lire chaque valeur d'item dans une autre boucle du meme type.

Code : Tout sélectionner

Enumeration Window
  #MainForm
EndEnumeration

Enumeration Gadget
  #Listicon
EndEnumeration

If OpenWindow(#MainForm, 0, 0, 800, 600, "New Project", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)      
  
  ListIconGadget(#Listicon, 10, 10, 780, 580, "Col1", 750)
  
  ;Quelques items
  For i = 0 To 9
    AddGadgetItem(#Listicon, -1, "Row " + i)
    
    ;Pour chaque item on associe une valeur (ça peut etre par exemple un numéro d'enregistrement)
    SetGadgetItemData(#Listicon, i, 100 + i)
  Next
  
  ;Lecture de chaque data
  For i = 0 To CountGadgetItems(#Listicon) - 1
    Debug GetGadgetItemData(#Listicon, i)
  Next
    
  Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Probléme SetGadgetItemData

Message par JohnJohnsonSHERMAN »

J´avais déja essayé en mettant "CountGadgetItem(#liste)" a la place de ce -1, mais ca ne fonctionnait pas non plus... Je vais réessayer aujourd´hui et je vous tient au courant.
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Probléme SetGadgetItemData

Message par Anonyme2 »

JohnJohnsonSHERMAN a écrit :J´avais déja essayé en mettant "CountGadgetItem(#liste)" a la place de ce -1, mais ca ne fonctionnait pas non plus... Je vais réessayer aujourd´hui et je vous tient au courant.
C'est CountGadgetItem(#liste) - 1 car pour une liste par exemple de 10 éléments, les indices vont de 0 à 9

Si ta liste contient 5 éléments, les indices vont de 0 à 4 mais si tu utilises CountGadgetItem(#liste) tu auras 5 et non 4 pour accèder au dernier élément, il faut déduire -1
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Probléme SetGadgetItemData

Message par Ar-S »

JohnJohnsonSHERMAN, je te conseils d'utiliser le debug à outrance, ça te permettra de comprendre et de corriger des erreurs bêtes comme celle ci qui font parfois rager.

Tu as une constante liste : Utilise Debug #Liste
Tu as une boucle For i = 0 to x
ajoute debug " i = " + str(i) dans ta boucle

etc.. Ce n'est pas une perte de temps et vraiment ça aide.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Probléme SetGadgetItemData

Message par JohnJohnsonSHERMAN »

Tout est rentré dans l´ordre a présent ! En fait je me suis arrahé les cheveux pour rien, c´était juste que pour tester, j´avais fait un debug, lequel pointait vers une valeur inexsitante (CountGadgetItems(#liste)+1, d´ou ce 0 permanent.
Comme quoi on peut chercher longtemps pour un truc qu´on a sous le nez :(

Je m´excuse du dérangement...
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Répondre