minilib
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: minilib
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
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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: minilib
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
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
au lieu deGetCPUName, Long, ())
D'ailleurs je viens de voir que tu as aussi un souci de parenthèse. Le résultat devrait êtreGetCPUName, ())
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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: minilib
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
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
Re: minilib
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.
Corrige un bug sur sélection du compilateur.
Ajout du RET + 4 pour les retours de string des procedures en x86.
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: minilib
Et ben...que de route depuis mon dernier test de la v1.4
- 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"
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 !!! ), 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é
Autrement tout a marché, l'init, le free et le messageRequester....top coooool !!!
Encore merci pour tout ce boulot et surtout pour le partage
- 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"
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 !!! ), 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é
Autrement tout a marché, l'init, le free et le messageRequester....top coooool !!!
Encore merci pour tout ce boulot et surtout pour le partage
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: minilib
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 bienle résultat de l'ASM compilé par MiniLib est
Essayez aussi de passer un Array avec un retour string.
Voila un code ou ça ne se passe pas bien
Code : Tout sélectionner
ProcedureDLL.s PassString(Buffer.s)
ProcedureReturn Buffer + " extend"
EndProcedure
Comme vous pouvez le voir, la dernière ligne n'est pas conforme.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
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%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: minilib
Bonjour à tous
J'ai essayé de compiler le prg suivant
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+
J'ai essayé de compiler le prg suivant
Code : Tout sélectionner
PROCEDUREDLL.S CONCATinv(A1.S,B1.S)
procedurereturn B1+A1
endprocedure
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.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Re: minilib
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
Restons zen...
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
Restons zen...
Re: minilib
et avec "stdcall" ?? (stdcall est pour windows et specialement les APIs )zaphod_b a écrit : J'ai testé le cdecl : marche pas avec concatinv(a$,b$)
non Tailbite n'etait pas de GnozalTailbite de Gnozal je crois, utilise aussi la convention +4.
mais Miguel Calderón alias : El_Choni
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: minilib
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
-prend en charge les ProcedureDLL$ aaa()
-procedureDLL = stdcall
-procedureCDLL = cdecl
Permet de compiler des libs en mode THREAD
Re: minilib
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...
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...
Re: minilib
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.
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.
Re: minilib
Bsr à tous
Cordialement
Voila une solution sans polémiqueszaphod_b a écrit : Si une lib n'est pas thread : elle marche à condition de ne pas mettre le mode THREAD dans le compilo.
Cordialement
Re: minilib
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
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
Re: minilib
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
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