Faire une UserLib uniquement en PB

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

Re: Faire une UserLib uniquement en PB

Message par JohnJohnsonSHERMAN »

Merci beaucoup G-Rom, ca ouvre un tas de possibilités :)

Du coup, si j'ai bien compris, on peut grâce à cela écrire des libs en C pour PB.... Intéressant :)
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Faire une UserLib uniquement en PB

Message par G-Rom »

JohnJohnsonSHERMAN a écrit :Merci beaucoup G-Rom, ca ouvre un tas de possibilités :)

Du coup, si j'ai bien compris, on peut grâce à cela écrire des libs en C pour PB.... Intéressant :)
Le dossier SDK montre comment faire ( dossier visualc ) je crois , en C le principe est le même, mais pas besoin de fasm, les compilos C/C++ génère très bien les .lib .obj
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Faire une UserLib uniquement en PB

Message par omega »

Bravo G_Rom (même si je ne suis pas sûr d'avoir bien compris, enfin pas à 100%). Vous êtes un génie G_Rom, merci encore !
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Faire une UserLib uniquement en PB

Message par Zorro »

Image :lol:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Faire une UserLib uniquement en PB

Message par G-Rom »

Zorro a écrit :Image :lol:
Pourquoi le corbeau ? tu fait référence a quoi ?

omega a écrit :Bravo G_Rom (même si je ne suis pas sûr d'avoir bien compris, enfin pas à 100%). Vous êtes un génie G_Rom, merci encore !
Génie ? je ne sais pas, merci quand même :)
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Faire une UserLib uniquement en PB

Message par Zorro »

G-Rom a écrit :Pourquoi le corbeau ? tu fait référence a quoi ?
un corbeau qui a un Fromage dans le Bec .... :roll:
aucune culture !! 8O
omega a écrit :Vous êtes un génie G_Rom, merci encore !
omega te dit pour résumer :
"que vous etes joli, que vous me semblez beau..sans mentir si votre ramage se rapporte a votre plumage
vous etes le phenix des hotes de ces bois "

alors , vas tu laisser tomber ton fromage ??
reference a la fable de LaFontaine "Le corbeau et le renard "

voila voila ... :)

devant tant de compliments, j'ai tout de suite pensé a ça ... :lol:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Faire une UserLib uniquement en PB

Message par Kwai chang caine »

Moi GRom, je l'admire parce qu'il a atteint un niveau bien supérieur à une très grande partie de nous tous, et de ce que je sais juste par la force des ses petits poings musclés 8O
Aussi parceque comme Bernadette il a parlé à dieu !!!! il a même codé un peu avec lui 8) ....noooon pas chirac !!! :?

Image

Qui ne rêverait pas de n'écrire ne serait ce que le l'instruction "End" dans un code généré par la machine de guerre FRED 8)
Et je l'aime parce que sous ses paroles "vaseline outside" se cache "quinquin" de gentil au final, je crois de mémoire qu'il aide les gens..

Bref,génie, peut être, parce qu'en fin de compte, il ne se la pète pas, on ne sais pas vraiment ce qu'il fait et sait faire, mais quinquin de hors du commun, "intellectuellement burné", et même pas qu'intellectuellement je crois :lol:

Et pourtant savoir faire tout ça en informatique, c'était un sacré challenge, car il est parti avec un sacré handicap...il a été militaire :lol: :lol:
Voilà une personne qui met à mal le cliché comme quoi les militaires sont des brutes sans cervelle :|

Voici donc le portrait que je pourrais faire de ce grand monsieur qui m'a accueilli sous le pseudo de Cpl.Bator (avec l'oeil qui cligne) le premier jour (comme DOBRO :wink:) ou j'ai eu l'idée de demander "cake" chose sur ce langage dans ce forum

Et pour le KCC ce genre de choses, elles sont gravées ...
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Faire une UserLib uniquement en PB

Message par G-Rom »

Zorro a écrit :
G-Rom a écrit :Pourquoi le corbeau ? tu fait référence a quoi ?
un corbeau qui a un Fromage dans le Bec .... :roll:
aucune culture !! 8O
J'avais compris pour la fable, mais pas fait le rapprochement avec le com d'Omega.
Kwai chang caine a écrit :Moi GRom, je l'admire parce qu'il a atteint un niveau bien supérieur à une très grande partie de nous tous, et de ce que je sais juste par la force des ses petits poings musclés 8O
Aussi parce qu'il a parlé à dieu !!!! il a même codé un peu avec lu
Merci, mais..., Dieu ? je suis devenu le Dieu de dieu alors, Fred à petit niveau en prog, comme au loto, il a tapé du bytecode a la main de façon random, ca lui a sorti un précompilateur, uniquement de la chance pour le coup ^^. il aurais mieux fait de jouer au loto :)
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Faire une UserLib uniquement en PB

Message par Zorro »

@KCC je suis a court de Fable là :lol:
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Faire une UserLib uniquement en PB

Message par Kwai chang caine »

:lol: :lol:
Juste pour le titre KCC avec PB c'est un peu "L'Âne et ses maîtres" :mrgreen:
Mais juste pour le titre, hein !!!

Parce que la fable...je l'ai lue trois fois...et toujours pas comprise :lol:
Ca me rappelle les Prototruc de FRED :mrgreen:

Bonne chance à ceux qui vont lire ça :
Lasource a écrit : L'Âne et ses Maîtres

L'Âne d'un Jardinier se plaignait au destin
De ce qu'on le faisait lever devant l'Aurore.
Les Coqs, lui disait-il, ont beau chanter matin ;
Je suis plus matineux encor.
Et pourquoi ? Pour porter des herbes au marché.
Belle nécessité d'interrompre mon somme !
Le sort de sa plainte touché
Lui donne un autre Maître ; et l'Animal de somme
Passe du Jardinier aux mains d'un Corroyeur.
La pesanteur des peaux, et leur mauvaise odeur
Eurent bientôt choqué l'impertinente Bête.
J'ai regret, disait-il, à mon premier Seigneur.
Encor quand il tournait la tête,
J'attrapais, s'il m'en souvient bien,
Quelque morceau de chou qui ne me coûtait rien.
Mais ici point d'aubaine ; ou, si j'en ai quelqu'une,
C'est de coups. Il obtint changement de fortune,
Et sur l'état d'un Charbonnier
Il fut couché tout le dernier.
Autre plainte. Quoi donc ! dit le Sort en colère,
Ce Baudet-ci m'occupe autant
Que cent Monarques pourraient faire.
Croit-il être le seul qui ne soit pas content ?
N'ai-je en l'esprit que son affaire ?

Le Sort avait raison ; tous gens sont ainsi faits :
Notre condition jamais ne nous contente :
La pire est toujours la présente.
Nous fatiguons le Ciel à force de placets.
Qu'à chacun Jupiter accorde sa requête,
Nous lui romprons encor la tête.
http://www.eternels-eclairs.fr/Poeme-Je ... es-Maitres
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
omega
Messages : 626
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Faire une UserLib uniquement en PB

Message par omega »

@Zorro
J'espère que tu n'es pas jaloux cher Michel?? En fait, toi aussi tu es fort dans ce domaine, très fort même...
ça n'a rien à voir avec la fable du corbeau, car ce que je dis je le pense vraiment ...
En vérité, je crois que (si je ne me trompe pas) il y a environ une dizaine parmi les membres de ce forum qui font partie de la tête de liste,
environ 70% des membres au milieu de la liste et le reste en bas de la liste (vrais débutants comme moi d'ailleurs)
Bonne continuation mes chers amis et j'avoue que j'ai appris pas mal de choses grâce à vous !
Merci
Win7 (x64) 64 bits Pb 5.72
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: Faire une UserLib uniquement en PB

Message par G-Rom »

omega a écrit :@Zorro
J'espère que tu n'es pas jaloux cher Michel??
Mais non, Michou.G est au dessus de tout cela. ;)
hahaha
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Faire une UserLib uniquement en PB

Message par falsam »

Comment intégrer une procédure avec paramètre optionnel ?

Si vous avez essayé de compiler le code suivant dans une userlib alors vous allez vite vous apercevoir que ça ne fonctionne pas.

Code : Tout sélectionner

ProcedureDLL.s StrMask(Value$, CurrencySymbol = "€")
  ProcedureReturn Value$ + " " + CurrencySymbol$
EndProcedure

:idea: Comment faire ?

Il faut créer autant de procédure qu'il y a de paramètres.
- Le nom de la première procédure sera visible dans le mini help de l'IDE En bas de la fenêtre.
- La ou les procédures suivantes reprendront le nom de la procédure principale suivie d'un numéro d'ordre qui commence par 2.

En reprenant l'exemple précédent, ça donnera :

Code : Tout sélectionner

ProcedureDLL.s StrMask(Value$)
  ProcedureReturn Value$ + " €"
EndProcedure

ProcedureDLL.s StrMask2(Value$, CurrencySymbol$ = "€")
  ProcedureReturn Value$ + " " + CurrencySymbol$
EndProcedure
Il va falloir aussi modifier le fichier de description en indiquant le ou les paramètres optionnels.

Code : Tout sélectionner

StrMask, String, [String], (Value$, [CurrencySymbol$]) - Your description 
String | StdCall | Unicode
- Chaque paramètre optionnel (Type et nom de la variable) est inséré dans une balise [ ]
- La première ligne correspond à la déclaration de la procédure Nom + Type + Variable
- La seconde ligne c'est la valeur retournée par la procédure. Ici elle est de type String Unicode.

Le fichier SteMask.Desc complet

Code : Tout sélectionner

ASM
0
OBJ
2

; 2 Dependancies 
String
Memory

; Your help file
HelpFileName

; Procedure summary
StrMask, String, [String], (Value$ [, CurrencySymbol$]) - Your IDE help description
String | StdCall | Unicode
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Faire une UserLib uniquement en PB

Message par falsam »

Cas de plusieurs paramètres optionnels

Nous allons maintenant intégrer un troisiéme paramétre dans notre procédure exemple.

Code : Tout sélectionner

ProcedureDLL.s StrMask(Value$, CurrencySymbol = "€", Negative.i = #True)
  ProcedureReturn Value$ + " " + CurrencySymbol$
EndProcedure
Cette procédure permet de signer un montant. Exemple -1000 €

Avec les explications précédentes vous avez compris que pour l'intégrer dans une UserLib, il va falloir coder trois procédures comme suit :

Code : Tout sélectionner

ProcedureDLL.s StrMask(Value$)
  ProcedureReturn Value$ + " €"
EndProcedure

ProcedureDLL.s StrMask2(Value$, CurrencySymbol$ = "€")
  ProcedureReturn Value$ + " " + CurrencySymbol$
EndProcedure

ProcedureDLL.s StrMask3(Value$, CurrencySymbol$ = "€", Negative.i = #True)
  Protected Buffer.s
  
  If Negative = #True
    Buffer = "-" + Value$ + " " + CurrencySymbol$
  EndIf
  ProcedureReturn Buffer
EndProcedure
Puis modifier le fichier de de description en insérant les variables optionnelles dans une balise [ ] de cette maniére

Code : Tout sélectionner

StrMask, String,[String],[Long], (Value$ [, CurrencySymbol$ [, Negative]]) - Your IDE help description 
String | StdCall | Unicode
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Faire une UserLib uniquement en PB

Message par falsam »

Pour finir avec ces deux explications précédentes, je vous propose de tester la lib StrMask

Download http://falsam.com/Download/data/StrMaskLib (x86)

Installer cette lib dans le dossier d'installation de PureBasic dossier PureLibraries\UserLibraries

Relancer le compilateur (Menu compilateur -> Redémarrer le compilateur) et enfin le code de test.

Code : Tout sélectionner

Debug StrMask("1000")
Debug StrMask("1000", "F")
Debug StrMask("1000", "F", #True)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre