minilib

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: minilib

Message par falsam »

Le liens étant perdu dans les méandres de ce post, ça fait pas de mal de le remettre ici
https://www.dropbox.com/s/b55c4gox2srss ... b.zip?dl=1
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: minilib

Message par falsam »

Aie! tu as un souci avec les procédures sans paramètre.

Tu génères l'obligation d'un parametre dans ton fichier desc.

Si j'ai la procédure ProcedureDLL.s GetCPUName(), tu génères
GetCPUName, Long, ())
au lieu de
GetCPUName, ())
D'ailleurs je viens de voir que tu as aussi un souci de parenthèse. Le résultat devrait être
GetCPUName, ()
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%
zaphod_b
Messages : 76
Inscription : mar. 09/déc./2014 20:02

Re: minilib

Message par zaphod_b »

Merci @Falsam, d'avoir testé.
Ca plantait avec le commentaire en fin de getcpuname.

J'ai corrigé (j'espère) et mis à jour le premier post avec la version 1.7.1
zaphod_b
Messages : 76
Inscription : mar. 09/déc./2014 20:02

Re: minilib

Message par zaphod_b »

Version 1.7.2 dispo (source sur 1er post).

Corrige un bug sur sélection du compilateur.
Ajout du RET + 4 pour les retours de string des procedures en x86.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: minilib

Message par Kwai chang caine »

Et ben...que de route 8) depuis mon dernier test de la v1.4 :oops:

- Génial !!! cette fois on peut encore moins se tromper dans les étapes...le bouton change à chacune d'elle
- Tu l'as fait multilangue
- Tu as apparemment fait une procédure Init() et Free() à la maniere des DLL "AttachProcess() et DetachProcess()"

Bon j'ai noté une coquillette, ton fichier langue est plus long que le tablo "lang" du coups plantage, je l'ai mis à 50 et ça roule "ma poule" :wink:
Moi ce que je fais quand y'a pas trop de données et pas trop besoin de rapidité, je redim à chaque lecture (Je sais....c'est po bien !!! :oops:), mais y'a jamais ce probléme, comme le fichier langue peut être changé de l’extérieur. ou alors dimensionner à 10000 et redim à la fin..car le pelo qui va te mettre 10000 mots dans ton fichier il est pas encore né :lol:

Autrement tout a marché, l'init, le free et le messageRequester....top coooool !!! 8)
Encore merci pour tout ce boulot et surtout pour le partage :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: minilib

Message par falsam »

Ajouter un + 4 pour obtenir un RET + 4 n'est pas forcément la bonne solution, c'est en autres pour ça que je ne le fais pas dans MLF pour le moment.

Voila un code ou ça ne se passe pas bien

Code : Tout sélectionner

ProcedureDLL.s PassString(Buffer.s)
  ProcedureReturn Buffer + " extend"
EndProcedure
le résultat de l'ASM compilé par MiniLib est
public PB_PassString
PB_PassString:
PS0=8
XOR eax,eax
PUSH eax
MOV edx,dword [esp+PS0+0]
LEA ecx,[esp+0]
CALL SYS_FastAllocateString
; procedurereturn Buffer + " extend"
MOV edx,dword [esp]
PUSH dword [_PB_StringBasePosition]
PUSH edx
CALL _SYS_CopyString@4
MOV edx,_S1
PUSH edx
CALL _SYS_CopyString@4
POP eax
ADD eax,[PB_StringBase]
JMP _EndProcedure1
; EndProcedure
_EndProcedureZero1:
MOV eax,[_PB_StringBasePosition]
ADD eax,[PB_StringBase]
MOV word [eax],0
_EndProcedure1:
PUSH dword [esp]
CALL _SYS_FreeString@4
ADD esp,4
RET + 4 4
Comme vous pouvez le voir, la dernière ligne n'est pas conforme.

Essayez aussi de passer un Array avec un retour string.
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%
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: minilib

Message par PAPIPP »

Bonjour à tous

J'ai essayé de compiler le prg suivant

Code : Tout sélectionner

PROCEDUREDLL.S CONCATinv(A1.S,B1.S)
  procedurereturn B1+A1 
endprocedure  
impossible à compiler le fichier *.desc est incomplet

Pour avoir une idée de ce qu'il faut faire :
http://www.purebasic.fr/french/viewtopi ... &start=165

je pense avoir trouver quelque bug dans MLF et d'avoir la solution sur l'écrasement de certains éléments

A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
zaphod_b
Messages : 76
Inscription : mar. 09/déc./2014 20:02

Re: minilib

Message par zaphod_b »

J'ai mis à jour MiniLib 1.7.3

J'utilise la convention +4 qui "semble" fonctionner avec les sources proposés de Falsam et Papipp (passtring et concatinv).
Donc si RET 4 on obtient RET 4+4
Si RET 8 on obtient RET 8+4

J'ai testé le cdecl : marche pas avec concatinv(a$,b$)

Tailbite de Gnozal je crois, utilise aussi la convention +4.

J'ai abandonné l'espoir de penser qu'il ne reste pas de bug 8O :? :oops:
Restons zen...
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: minilib

Message par Zorro »

zaphod_b a écrit : J'ai testé le cdecl : marche pas avec concatinv(a$,b$)
et avec "stdcall" ?? (stdcall est pour windows et specialement les APIs ;) )
Tailbite de Gnozal je crois, utilise aussi la convention +4.
non Tailbite n'etait pas de Gnozal :)
mais Miguel Calderón alias : El_Choni
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
zaphod_b
Messages : 76
Inscription : mar. 09/déc./2014 20:02

Re: minilib

Message par zaphod_b »

Mis à jour la version 1.7.4 :
-prend en charge les ProcedureDLL$ aaa()
-procedureDLL = stdcall
-procedureCDLL = cdecl

Permet de compiler des libs en mode THREAD
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: minilib

Message par Ollivier »

Ah ! Ben t'as pas attendu !

Petite suggestion utile (ou pas).

Il y a un code ici

Quand on utilise les alarmes pour créer/gérer/supprimer des threads, on peut embarquer un débogueur assez particulier (et rendre l'honneur à un concept évoqué par PAPIPP).

Il y a une belle doc avec, dans le sujet en question, même pas besoin que je reste communiquer dessus...

Je crois que c'était en version 4.5. Me souviens plus. Après on a AttachThread/DetachThread qu'il faut substituer au programme client. Et j'avais déjà tout centralisé pour ça, donc, pas un très gros effort.

Je suppose que la principale cause de crash sur les versions récentes de compilateur, c'est justement (et heureusement) que Fred a aussi rajouté des relâchements (équivalents de Delay) dans des instructions natives et comme il sont temporisés, mes Delays explicites viennent foirer la chronométrie des Delays implicites (mais pas tous !). Il suffit de savoir commenter les bons et zoup direction la version 5.6.

Voilà, ne sachant pas où tu en es dans ton projet (je n'ai pas besoin de faire de libs), peut-être que ça peut servir...
zaphod_b
Messages : 76
Inscription : mar. 09/déc./2014 20:02

Re: minilib

Message par zaphod_b »

Pas tout pigé (post précédent).............

Pour les threads et les libs : sa sert pour pouvoir utiliser des fonctions d'une LIB avec l'option du compilateur THREAD.

Si une lib n'est pas thread : elle marche à condition de ne pas mettre le mode THREAD dans le compilo.

Minilib dans sa version 1.7.5 (source non mis à jour) permet de faire :
1/ des libs non thread
2/ des libs thread uniquement
3/ des libs qui fonctionnent en thread ou non (threadsafe)

Le mode AUTO permet de tout faire en 1 seule étape.
J'ai rajouté une fonction RECOMP pour recompiler un source ASM, pas vraiment utilie aux libs mais j'en avais besoin.

Je laisse la place à MLF.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: minilib

Message par kernadec »

Bsr à tous
zaphod_b a écrit : Si une lib n'est pas thread : elle marche à condition de ne pas mettre le mode THREAD dans le compilo.
Voila une solution sans polémiques :mrgreen:
Cordialement
Mouillard
Messages : 77
Inscription : mer. 13/sept./2017 14:35
Localisation : Picardie (Somme)

Re: minilib

Message par Mouillard »

Merci Zaphob pour cette ligne de code dans MiniLib...

Elle me sert à remplacer un éditeur dans lequel je pouvais pas faire de copier/coller.
[codeStringGadget(#mlib_String_edit, 3, 5, 405, 190, "", #ES_MULTILINE|#WS_BORDER|#WS_VSCROLL|#WS_HSCROLL)][/code]

J'ai seulement re baptiser le gadget et ça marche impeccable.....

Copier/ coller de recette de cuisine , idée de Micoute et code de Falsam.

Bon W E.
Jean Michel
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: minilib

Message par kernadec »

Bjr Mouillard
En bas a gauche dans options de ta boite message (réponse) tu as le mode d' emploi du menu BBCode !
Sinon voilà
http://forums.phpbb-fr.com/faq.php?mode=bbcode
Cordialement
Répondre