Page 1 sur 1

Morelisticongadget() lib et PB 3.90

Publié : jeu. 22/avr./2004 19:52
par Anonyme2
J'ai vu un message sur le forum anglais avec peut-être un problème avec la commande Setlisticongadgetcolor() de ma librairie MorelisticonGadget.

J'ai pas bien compris le problème et j'ai testé mais avec succès.

Fred, faut-il que je réécrive mes fonctions avec la commande ISGadget() ?

Je teste dans chaque appel que le gadget existe avec GadgetId(Gadget).

Quels sont les changements de la version 3.90 qui pourraient troubler le fonctionnement des mes librairies ?

Merçi

Publié : ven. 23/avr./2004 14:21
par Fred
Effectivement, IsGadget() est la function qui te permet facilement de voir si un gadget existe. Mais a mon avis, faut mieux mettre un debugger check pour indiquer que le gadget n'existe pas, parce que IsGadget() peut devenir couteux si beaucoup de gadgets sont créés.

Publié : ven. 23/avr./2004 14:42
par Anonyme2
Généralement, je teste dans ma librairie si le #Gadget passé existe effectivement avec ta fonction GadgetID() pour éviter les crash.

Code : Tout sélectionner

  MOV    eax, dword [Gadget]
  CALL   PB_GadgetID
  TEST   eax, eax
  JZ     _Erreur
Quel est la différence avec IsGadget ?
Que fait exactement IsGadget ?

Publié : ven. 23/avr./2004 14:59
par Fred
IsGadget valid un numero de gadget. Avec la fonctionality #PB_Any, il y 2 facons: un tableau (methode precedente) et une liste chainée (pour les #PB_Any). Maintenant, chaque library exporte une fonction du type: _PB_Gadget_GetObject, qui prend un numero d'objet et renvoie son id. Donc il te faudra utiliser cette fonction pour etre completement compable. Etant donné que c'est une fonction C, le parametre est passé sur la pile.

Code : Tout sélectionner

  PUSH dword id
  CALL _PB_Gadget_GetObject
  ; eax contient le pointer sur l'objet, qu'il soit dynamic ou non.
Le IsGadget(), je le mettrais dans la routine de debug, comme pour les autres fonctions PureBasic.

Publié : ven. 23/avr./2004 17:32
par Anonyme2
Ok, Merci Fred.

Encore un question.
Crois-tu qu'il soit judicieux de tester dans chaque Fonction de mes librairies l'existence ou non avec IsGadget ou crois-tu que c'est mieux de laisser le codeur tester l'existance ou non du Gadget ?

Publié : sam. 24/avr./2004 10:36
par Fred
Il est préféranble de laisser au codeur le choix de tester ou non si un gadget existe, car IsGadget() peut s'averer couteux en temps CPU. En plus ca ralonge un peu le code donc l'exe :)

Publié : sam. 24/avr./2004 10:41
par Anonyme2
Merci

:wink: