Page 1 sur 1
procedure return string ... en dll marche pas
Publié : jeu. 13/avr./2006 17:52
par scaraber
salut
voila j'est fait une dll et je n'arive pas a recuperer un string quelle doit me revoyer . quand jutilise en procedure sa marche mais en dll sa veut pas donner de string comment faire?
A+
scaraber
Publié : jeu. 13/avr./2006 18:49
par Flype
tu ne peux pas effectivement. enfin pas directement.
en fait comprends que les 'string', les '.s' ou encore les '$' sont une spécificité de purebasic. Or les dll sont faites pour être exploitées dans n'importe quel langage.
en principe une chaine de caractères est une adresse sur une suite d'octets jusqu'à un octet de valeur zéro.
donc c'est çà - une adresse - qu'il faut que tu renvoies depuis ta dll.
en pratique l'adresse d'une chaine tu la récupères grace à @maChaine$.
et de l'autre coté du mirroir - depuis ton programme principal - tu récupères ta chaine grace à maChaine$ = PeekS(resultat).
Publié : jeu. 13/avr./2006 18:59
par scaraber
petit probleme au lieu de me renvoyer le text 1;test apres le peek j'est ^ + ou un truc comme sa ...
Publié : jeu. 13/avr./2006 19:13
par flaith
exemple rapide :
la DLL
Code : Tout sélectionner
ProcedureDLL test()
ProcedureReturn @"Ceci est un test"
EndProcedure
le prog qui charge la DLL
Code : Tout sélectionner
If OpenLibrary(0, "TestDLL.dll")
result=CallFunction(0, "test")
MessageRequester("TestDLL",PeekS(result))
EndIf
Publié : jeu. 13/avr./2006 19:23
par scaraber
bon jai reussi a trouver un truc qui marche le voici
la dll
Code : Tout sélectionner
*Buffer = AllocateMemory(128)
PokeS(*Buffer, mssg$)
ProcedureReturn *Buffer
le programme
Code : Tout sélectionner
adresse=CallFunction(1,"fonction","script.ini",mot3$,30)
message$=PeekS(adresse)
merci beaucoup
A+
scaraber