Page 1 sur 2
Créer une librairie autrement que avec TailBite
Publié : mer. 02/avr./2014 9:32
par microdevweb
Pourquoi?
Parce que je voudrai créer une librairie avec des modules (si cela est évidement possible)
Pourquoi des modules? Parce que c'est un peut du style POO, et je voudrais me créer un Gadget du type ZoneRépétée Windev que j’appelais comme suit
Code : Tout sélectionner
OpenWindow(0,0,0,800,400,"Teste",#PB_Window_Maximize|#PB_Window_SystemMenu)
ZoneRepette::CreateZoneRepetee(1,0,0,200,200,50)
ZoneRepette::AddGadget(1,0,ZoneRepette::#TextGadgetType,ZoneRepette::#StringValueType,
10,10,100,30)
ZoneRepette::AddGadget(1,1,ZoneRepette::#TextGadgetType,ZoneRepette::#StringValueType,
110,10,100,30)
ZoneRepette::AddGadget(1,2,ZoneRepette::#TextGadgetType,ZoneRepette::#StringValueType,
210,10,100,30)
ZoneRepette::AddGadget(1,3,ZoneRepette::#TextGadgetType,ZoneRepette::#StringValueType,
310,10,100,30)
ZoneRepette::AddGadget(1,4,ZoneRepette::#TextGadgetType,ZoneRepette::#StringValueType,
410,10,100,30)
ZoneRepette::AddGadget(1,5,ZoneRepette::#TextGadgetType,ZoneRepette::#StringValueType,
510,10,100,30)
petit exemple si je fait ceci
Code : Tout sélectionner
DeclareModule Teste
Declare Aff()
EndDeclareModule
Module Teste
Global teste$="Coucou"
Procedure Aff()
MessageRequester("Info",teste$)
EndProcedure
EndModule
je lance Tailbite et j'ai FAsm: Shared\Aff.asm Error Line no:15 Error code:-122 Erros String: UNDEFINED_SYMBOL
C'est le
"Global" qui coince
Si évidement j’enlève le "Global" cela fonctionne, mais dans l'ide j'ai bien mon module et sa procédure Teste::Aff(), mais lorsque je lance le compilateur ERREUR Module introuvable Teste, de toute manière mon messagerequester m'aurais afficher un beau message vide
Alors voila ma question, y à t'il moyen de créer des librairie avec des modules ?
Merci d'avance
Re: Créer une librairie autrement que avec TailBite
Publié : mer. 02/avr./2014 9:45
par Backup
je sais pas ...
mais il me semble qu'une librairie faite avec tailbite
doit avoir une architecture basé sur les ProcedureDLL()
les Modules, c'est une autre façon de faire des librairies..
mais sans Tailbite
des librairies "open sources" ........
mais je peux me tromper .... en ce moment, ça m'arrive

Re: Créer une librairie autrement que avec TailBite
Publié : mer. 02/avr./2014 9:57
par Ar-S
Il me semble que tu as raison.
Les Modules permettent un accès aux sources (et par la même occasion de n'utiliser que ce dont on a besoin dans une grosse lib), une lib taillebite est un DLL de fonctions perso compilées que tu fournis avec ton exe. Le seule mod que j'ai utilisé est celui de la DroopyLib qui permet justement d'extraire seulement les fonctions dont on a besoin.
Re: Créer une librairie autrement que avec TailBite
Publié : mer. 02/avr./2014 12:06
par G-Rom
vous êtes a coté de la plaque les gars, les modules sont une spécificité PB , rien à voir avec des librairie compilé ( dll / so ).
un module est semblable au namespace du c++ , et le module permet de rendre privée certaine chose au programmeur.
je vous retourne vers la doc & google, j'ai pas le temps de m’étaler plus que cela ^^
@++
Re: Créer une librairie autrement que avec TailBite
Publié : mer. 02/avr./2014 14:07
par graph100
Ar-S a écrit : une lib taillebite est un DLL de fonctions perso compilées que tu fournis avec ton exe.
si je me trompe pas, les fichiers lib ne sont pas comparables aux DLL, car tu n'as pas besoin de fournir un autre fichier pour supporter ton exécutable, et 2èment uniquement les fonctions nécessaires sont inclues dans le programme lorsqu'elle proviennent d'une librairie !
Re: Créer une librairie autrement que avec TailBite
Publié : mer. 02/avr./2014 14:16
par microdevweb
Daccord avec G-Rom, ce qui pratique dans les module c'est que comme en objet on peut rendre des structure, variable, procédure invisible a l'utilisateur. De plus dans l'ide vous tapez le nom du module:: et seule les procédure seront accessible, donc gain de temps.
Re: Créer une librairie autrement que avec TailBite
Publié : mer. 02/avr./2014 14:46
par Ar-S
graph100 a écrit :Ar-S a écrit : une lib taillebite est un DLL de fonctions perso compilées que tu fournis avec ton exe.
si je me trompe pas, les fichiers lib ne sont pas comparables aux DLL, car tu n'as pas besoin de fournir un autre fichier pour supporter ton exécutable, et 2èment uniquement les fonctions nécessaires sont inclues dans le programme lorsqu'elle proviennent d'une librairie !
Oui je me mélange les pinceaux avec la creation de dll et de lib MeaCulpa.
Par contre méfie quand tu dis que "uniquement les fonctions nécessaires sont inclues dans le programme lorsqu'elle proviennent d'une librairie". Il me semble qu'il y a pas mal de temps, la droopylib (par exemple), contenant des commandes de registres et autres engendraient un exe en faux positif, et cela même en utilisant une fonction non "sensible". A vérifier aujourd'hui.
Re: Créer une librairie autrement que avec TailBite
Publié : ven. 04/avr./2014 9:19
par Mesa
Il y a une erreur avec global dans le code
Code : Tout sélectionner
DeclareModule Teste
Declare Aff()
EndDeclareModule
Module Teste
Global teste$="Coucou" ;-->Erreur
Procedure Aff()
MessageRequester("Info",teste$)
EndProcedure
EndModule
La définition "Global" n'a de sens que dans le bloc "DeclareModule/ EndDeclareModule ", voir la doc.
On peut faire comme ça :
Code : Tout sélectionner
Global var_global$="Global Appli"
DeclareModule Test
texte$="Coucou Module" ; Equivalent de Global dans un module seulement, quand c'est déclaré dans DeclareModule
Global var_global$="Global Module"
Declare Aff()
EndDeclareModule
Module Test
Procedure Aff()
MessageRequester("Info", Test::texte$)
MessageRequester("Info", var_global$)
EndProcedure
EndModule
Debug Test::texte$ ;-> Affiche "Coucou Module"
Debug var_global$ ;-> Affiche "Global Appli"
Debug Test::var_global$ ;-> Affiche "Global Module"
Test::Aff()
;-> Affiche "Coucou Module"
;-> Affiche "Global Module"
Ou comme ça :
Code : Tout sélectionner
Global var_global$="global"
; Le module commun, qui sera utilisé par d'autres modules afin de partager des données
; ------------------------------------------------------------------------------------
DeclareModule Commun
Global var_global$="global"
EndDeclareModule
Module Commun
EndModule
DeclareModule Test1
Declare Aff()
EndDeclareModule
Module Test1
UseModule Commun
var_global$="Test1"
Procedure Aff()
MessageRequester("Info", var_global$)
EndProcedure
EndModule
DeclareModule Test2
Declare Aff()
EndDeclareModule
Module Test2
UseModule Commun
var_global$="Test2"
Procedure Aff()
MessageRequester("Info", var_global$)
EndProcedure
EndModule
Debug var_global$ ;-> Affiche "global"
Debug Commun::var_global$ ;-> Affiche "Test2"
;Debug Test1::var_global$ ;-> Erreur car absente de "DeclareModule Test1"
;Debug Test2::var_global$ ;-> Erreur car absente de "DeclareModule Test2"
Test1::Aff() ;-> Affiche "Test2"
Test2::Aff() ;-> Affiche "Test2"
; => var_global$ agit comme une variable globale à l'intérieur du module.
M.
Re: Créer une librairie autrement que avec TailBite
Publié : sam. 05/avr./2014 6:51
par microdevweb
Merci mesa pour c'est infos
Re: Créer une librairie autrement que avec TailBite
Publié : sam. 05/avr./2014 11:13
par Backup
G-Rom a écrit :vous êtes a coté de la plaque les gars, les modules sont une spécificité PB , rien à voir avec des librairie compilé ( dll / so ).
un module est semblable au namespace du c++ , et le module permet de rendre privée certaine chose au programmeur.
je vous retourne vers la doc & google, j'ai pas le temps de m’étaler plus que cela ^^
@++
je sais pas si tu m'a inclu dans ton "les gars..."
mais moi j'ai bien ecris
mais il me semble qu'une librairie faite avec tailbite
doit avoir une architecture basé sur les ProcedureDLL()
ce qui ne signifie pas qu'une Dll est un librairie Purebasic , mais que pour faire une librairie avec Taillbite
il faut utiliser une collection de
ProcedureDLL() ...

Re: Créer une librairie autrement que avec TailBite
Publié : sam. 05/avr./2014 11:22
par falsam
J'espére que je ne suis pas inclus dedans non plus ha ha ha

Dobro parfois tu m'étonnes .... ou alors tu vieillis mal

Re: Créer une librairie autrement que avec TailBite
Publié : sam. 05/avr./2014 11:45
par Backup
non , je ne vielli pas mal , microdevweb a changé son premier message
il disait qu'il voulait
a l'aide de Tailbite faire une librairie en utilisant les Modules !
c'est pour ça que je parle de Tailbite d'ailleurs ...
évidement , maintenant qu'il a modifié son message , ma réponse parait a coté de la plaque
et me fait ranger microdevweb dans mon tiroir "G-Romesque"

Re: Créer une librairie autrement que avec TailBite
Publié : dim. 06/avr./2014 12:07
par Droopy
J'ai abandonné Tailbite pour les modules dans la dernière DropyLib
TailHmod permet d'avoir une aide associée et contextuelle.
Bon désolé pour cet instant de publicité

Re: Créer une librairie autrement que avec TailBite
Publié : dim. 06/avr./2014 15:36
par Backup
Droopy a écrit :TailHmod permet d'avoir une aide associée et contextuelle.
d'ailleurs a ce propos, tu pourrai peut etre faire un topic consacré a TailHmod
car pour ne rien te cacher , je n'ai ni compris a quoi ça sert, ni comment on s'en sert
je me dis que je dois donc pas etre le seul .... quoique ? ..

Re: Créer une librairie autrement que avec TailBite
Publié : lun. 07/avr./2014 8:21
par G-Rom
@Dobro, je ne parlais pas de cela & pas de toi.
Quand tu fait une librairie avec pierre paul ou jacques comme outils , tes structures , tes variables, tes modules , ne sont plus visible dès lors que tu utilises la librairie compilé ( dll ou lib pb ), les lib PB sont d'ailleurs des librairies statique, seul les fonctions utilisé sont dans l’exécutable finale.
Pour avoir accès à des modules , des structures , issue d'une librairie , il faut fournir avec la librairie un "header" , comme dans la plupart des langages. tout simplement.
@++