Morelisticongadget() lib et PB 3.90

Sujets variés concernant le développement en PureBasic
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Morelisticongadget() lib et PB 3.90

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

Message 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.
Dernière modification par Fred le ven. 23/avr./2004 14:55, modifié 1 fois.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

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

Message 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.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

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

Message 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 :)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Merci

:wink:
Répondre