Gadget objet number is very hight : ignorer ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Gadget objet number is very hight : ignorer ?

Message 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
Vive le temps libre !
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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.
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Message 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.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message 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
olivier
Messages : 305
Inscription : mer. 05/janv./2005 12:58
Localisation : http://www.tib-net.com/meca/index.htm

Message 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....
Vive le temps libre !
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

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

Message 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
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

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

Message 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
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

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

Message par Flype »

Mais comment çà marche en interne alors pour #PB_Any ?
Chaque #PB_Any est stocké dans une liste chainée ?
Image
Répondre