Page 4 sur 5
Re: minilib
Publié : dim. 08/oct./2017 15:46
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
Re: minilib
Publié : dim. 08/oct./2017 15:58
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, ()
Re: minilib
Publié : dim. 08/oct./2017 18:07
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
Re: minilib
Publié : jeu. 12/oct./2017 10:03
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.
Re: minilib
Publié : jeu. 12/oct./2017 10:42
par Kwai chang caine
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

Re: minilib
Publié : jeu. 12/oct./2017 20:22
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.
Re: minilib
Publié : ven. 13/oct./2017 10:09
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+
Re: minilib
Publié : ven. 13/oct./2017 14:19
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
Restons zen...
Re: minilib
Publié : ven. 13/oct./2017 16:35
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
Re: minilib
Publié : sam. 14/oct./2017 10:47
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
Re: minilib
Publié : ven. 27/oct./2017 1:32
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...
Re: minilib
Publié : ven. 27/oct./2017 15:52
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.
Re: minilib
Publié : ven. 27/oct./2017 19:03
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
Cordialement
Re: minilib
Publié : sam. 28/oct./2017 13:53
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
Re: minilib
Publié : sam. 28/oct./2017 15:25
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