Page 1 sur 1

Gadget objet number is very hight : ignorer ?

Publié : mer. 15/févr./2006 14:29
par olivier
Bonjour à tous

J'ai besoins de réserver de la place pour des gadget, et de place en place j'ai des gadget qui ont une ID >10000.Lorsque j'execute mon programme avec le debugger, j'ai le message : Gadget objet number is very hight.

Comment puis-je parametrer cette alerte ?

Merci d'avance

Publié : mer. 15/févr./2006 14:38
par nico
ça n'empêche pas l'éxécution du programe, avec #PB_ANY c'est pareil on se retrouve avec des valeurs très grande.

Publié : jeu. 16/févr./2006 0:25
par Fred
Il faut faire attention en choisissant des numeros de gadgets tres grands, car un tableau de 0 à 'numeroleplushaut' est alloué, c'est pour cela que cette alerte survient. Si tu veux des gadgets numérotés dynamiquement, utiliser #PB_Any.

Publié : jeu. 16/févr./2006 1:50
par Guimauve
Fred a écrit :Il faut faire attention en choisissant des numeros de gadgets tres grands, car un tableau de 0 à 'numeroleplushaut' est alloué, c'est pour cela que cette alerte survient. Si tu veux des gadgets numérotés dynamiquement, utiliser #PB_Any.
Juste une question, si on fait dans un programme :

Code : Tout sélectionner

Enumeration = 100

   #Btn_New_Project
   #Btn_Open_Project
   #Btn_Save_Project
   #Btn_Generate_Code
   #Btn_Send_To_ClipBoard
   #Btn_Language
   #Btn_Quit
   #Btn_PushPin01
   #Btn_PushPin02
   
   #Btn_Help
   #Btn_Tutorial
   #Btn_Previous
   #Btn_Next
   #Btn_Refresh
   
   #IconListSize

EndEnumeration
Donc les 99 premières cases du tableau serviraient à rien, mise à part gaspiller de la mémoire. C'est bien cela ?

A+
Guimauve

Publié : jeu. 16/févr./2006 9:42
par olivier
Merci pour vos réponse mais le doute persiste :
Est-il possible de désactivé cette alerte ?

Sinon, vos réponse m'amène une question :
Mais qu'elle est donc cette constante #PB_Any ???? :?

Mon problème :
Dans un programme, je fais une espèce de Forum. Prenons l'exemple de celui qui est sous nos yeux. Pour chaque message, un bouton "Citer" est créé.
C'est le cas dans mon programme.
J'ai donc réservé une place pour ces gadgets :

Code : Tout sélectionner

#max_post=100
Enumeration #PB_Compiler_EnumerationValue Step #max_post
    #debut_post
    #fin_post
EndEnumeration
Puis dans la gestion des évenements, je met

Code : Tout sélectionner

Case #debut_post To  #fin_post
Comme j'ai la même chose pour plusieur gadget :
1: le gadget Web qui affiche le message
2 : Boutton Vu
3 : Boutton Fait
4 : Boutton Editer
5 : Boutton Supprimer
Puis sur une autre liste (les nouveau message), avec d'autre bouton.

Et pour clore le tout, pour être tranquille j'avais initialisé #max_post=999

Alors forcément cela dépasse, et à chaque affichage : Message d'alerte !

Si vous avez une solution, cela serait bien pratique. Pour l'instant j'ai changé le max de message....

Publié : jeu. 16/févr./2006 14:17
par Guimauve
Dans un cas comme ça, je n'utiliserais pas des constantes. Je garderais en mémoire dans une liste chainé structuré les numéros identification de message et de chacun des boutons. Et lorsqu'un message est ajouté il faut prendre le dernier élément de la liste, mémoriser les valeurs et faire un AddElement() en incrémentant les numéros de 1 et en ajoutant les boutons au même moment à la Gadgetlist.

Pour la constante #PB_Any on force le programme à donné lui-même un numéro d'identification.

Code : Tout sélectionner

ID_Bouton_Citer = ButtonGadget(#PB_Any,x,y,width,Height,"Citer")
ID_Bouton_Supprimer = ButtonGadget(#PB_Any,x,y,width,Height,"Supprimer")
Il est possible de combiner les 2 méthodes plus haut. J'espère que ça peut t'aider.

A++
Guimauve

Publié : jeu. 16/févr./2006 17:57
par Dr. Dri
Guimauve a écrit :
Fred a écrit :Il faut faire attention en choisissant des numeros de gadgets tres grands, car un tableau de 0 à 'numeroleplushaut' est alloué, c'est pour cela que cette alerte survient. Si tu veux des gadgets numérotés dynamiquement, utiliser #PB_Any.
Juste une question, si on fait dans un programme :

Code : Tout sélectionner

Enumeration = 100

   #Btn_New_Project
   #Btn_Open_Project
   #Btn_Save_Project
   #Btn_Generate_Code
   #Btn_Send_To_ClipBoard
   #Btn_Language
   #Btn_Quit
   #Btn_PushPin01
   #Btn_PushPin02
   
   #Btn_Help
   #Btn_Tutorial
   #Btn_Previous
   #Btn_Next
   #Btn_Refresh
   
   #IconListSize

EndEnumeration
Donc les 99 premières cases du tableau serviraient à rien, mise à part gaspiller de la mémoire. C'est bien cela ?

A+
Guimauve
J'attend toujours la réponse à cette question 8O
Cela dit on peut toujours vérifier ca soi-même

Dri

Publié : jeu. 16/févr./2006 19:42
par Guimauve
Dr. Dri a écrit : J'attend toujours la réponse à cette question 8O
Cela dit on peut toujours vérifier ca soi-même
Dri
Trouver ça nous même ?? À moins d'avoir un pointeur sur le tableau, je ne vois pas comment on peut faire.

De plus, je ne savais même pas que les constantes étaient dans un tableau.

Si Fred repasse ici une petite précision serait la bienvenu.

A+
Guimauve

Publié : jeu. 16/févr./2006 19:58
par Dr. Dri
Tu peux faire les tests en glissant un peu d'assembleur dans ton code. Avec bien sûr les infos nécessaires dans le PB Library Descriptor

Code : Tout sélectionner

Library Descriptions
--------------------

  Most of the libraries have 3 shared 32 bits (long) variables:
  
  _PB_LibraryName_ObjectsNumber : 
  
   Maximum number of object that can actually be handled. If the user requiers
   an object number above this number, a new memory bank must be allocated.
     
  _PB_LibraryName_ObjectsArea :
  
   The memory bank address. All the objects are allocated in one bank, indexed
   like in an array. This allows extra fast objet positioning and minimize the
   memory allocation (and fragmentation).
Dri

Publié : jeu. 16/févr./2006 20:59
par Fred
Guimauve a écrit :
Fred a écrit :Il faut faire attention en choisissant des numeros de gadgets tres grands, car un tableau de 0 à 'numeroleplushaut' est alloué, c'est pour cela que cette alerte survient. Si tu veux des gadgets numérotés dynamiquement, utiliser #PB_Any.
Juste une question, si on fait dans un programme :

Code : Tout sélectionner

Enumeration = 100

   #Btn_New_Project
   #Btn_Open_Project
   #Btn_Save_Project
   #Btn_Generate_Code
   #Btn_Send_To_ClipBoard
   #Btn_Language
   #Btn_Quit
   #Btn_PushPin01
   #Btn_PushPin02
   
   #Btn_Help
   #Btn_Tutorial
   #Btn_Previous
   #Btn_Next
   #Btn_Refresh
   
   #IconListSize

EndEnumeration
Donc les 99 premières cases du tableau serviraient à rien, mise à part gaspiller de la mémoire. C'est bien cela ?

A+
Guimauve
C'est bien ca.

Publié : jeu. 16/févr./2006 21:33
par Flype
Mais comment çà marche en interne alors pour #PB_Any ?
Chaque #PB_Any est stocké dans une liste chainée ?