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. :cry:

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 :wink:

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. :D

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 :

Code : Tout sélectionner

ProcedureDLL.s taprocedure()
.....
...

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 :D

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