Page 1 sur 1
chaines et DLLs
Publié : mar. 08/févr./2005 21:59
par Thierry 31
je lis assidument, depuis qq mois, tout ce qui se rapporte à PB, je ne trouve malheureusement pas grand chose sur l'utilisation des DLLs.
si j'ai à priori, compris, la manière de les créer, de les appeler ect, je sèche depuis qq jours sur le retour par une DLL d'une chaine$ de caractères.
si une âme sensible peut se fendre de qq lignes de code par exemple une DLL qui retourne une chaine$ que lui envoie la procédure appelante: 3,4 lignes quoi
merci
Publié : mar. 08/févr./2005 22:09
par julien
Code : Tout sélectionner
If OpenLibrary(1,"ta_DLL.dll")
*Result = CallFunction(1, "ta_fonction", "parametre")
Debug PeekS(*Result)
EndIf
c'est le PeekS(*Result) qui est important pour lire un retour d'une chaine de caractère.
En espèrant de t'avoir aidé
ce fut rapide
Publié : mar. 08/févr./2005 22:41
par Thierry 31
merci je vais essayer ça.
une autre question siouplé msieu à siouplé
à quel moment et endroit faut'il déclarer la chaine$ retournée par la DLL comme globale (aide anglaise de la v3.92 vu sur purearea.net)?
dans le code de la DLL ? ou dans le code de la procédure principale?
merci d'avance
Publié : mar. 08/févr./2005 23:10
par julien
Tu n'as pas à déclarer de global dans ta prodecure (DLL), pour la chaine tu déclare comme ceci :
Publié : mar. 08/févr./2005 23:11
par Le Soldat Inconnu
au début du code de ta dll, tout simplement.
en fait,on peut la mettre partout dans le code à condition que la varaibale $chaine ne soit pas utilisée avant le "Global $chaine" dans le code.
Donc le mieu est de le mettre au début pour éviter le problème.
Publié : mer. 09/févr./2005 9:26
par Thierry 31
merci a tous les deux

Publié : mer. 09/févr./2005 21:03
par Le Soldat Inconnu
Pour info, une var globale à la dll n'est accessible que par la dll comme toutes les variables déclarées dans la dll
en fait, il faut considére la dll et le programme comme 2 mondes distincts qui ne communiquent que par l'envoie d'info au procedure et la valeur de retour de la procedure