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
procedure return string ... en dll marche pas
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).
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).
exemple rapide :
la DLL
le prog qui charge la DLL
la DLL
Code : Tout sélectionner
ProcedureDLL test()
ProcedureReturn @"Ceci est un test"
EndProcedure
Code : Tout sélectionner
If OpenLibrary(0, "TestDLL.dll")
result=CallFunction(0, "test")
MessageRequester("TestDLL",PeekS(result))
EndIf
bon jai reussi a trouver un truc qui marche le voici
la dll
le programme
merci beaucoup
A+
scaraber
la dll
Code : Tout sélectionner
*Buffer = AllocateMemory(128)
PokeS(*Buffer, mssg$)
ProcedureReturn *Buffer
Code : Tout sélectionner
adresse=CallFunction(1,"fonction","script.ini",mot3$,30)
message$=PeekS(adresse)
A+
scaraber