Page 1 sur 1

Les DLL ...!

Publié : mer. 02/nov./2005 10:19
par Twix
Salut,

dans un topic dans les rapports de bugs, dans l'aide de PB etc... on dit "en dehors des procédures, tu n'écriras pas", "les globales ne marcheront pas" sur l'écriture de DLL.

Alors, moi j'ai écris plein de choses à l'éxtérieur de ma DLL (pas de Global) mais des structures, des tableaux et des Declare (parce que j'ai la flemme de mettre les procedures dans l'ordres :oops: )

Donc si je suis bien ma logique, il faudrait que je mette le tout dans une procedure ?
Note : pour les tests avec le débugueur, ça marchait tranquille. J'y ai même compilé une fois, mais je n'ai pas testé :oops: .

++

Publié : mer. 02/nov./2005 10:22
par Dr. Dri
si si global fonctionne pour une dll...

Dri

Publié : mer. 02/nov./2005 10:22
par Backup
je crois que tout ce qui est declaration, tableau ect ..
ya pas de probleme , c'est les commandes basic , qu'il ne faut pas ecrire en dehors des procedures , mais toute la preparation du prg , ya pas de soucis , en principe .... :? Confirmation ? 8O

Publié : mer. 02/nov./2005 10:22
par lionel_om
Il faut que tu mette les structures dans chaque procédure je crois... :?

Publié : mer. 02/nov./2005 10:31
par Twix
merci bcp,

je me débouillerai si jamais ça marche pas lors des tests. y'a pas une procédure avec un nom spéciale qui séxécute toute seule au chargement de la dll ? je peut peut être inclure toutes les déclarations la dedans...

d'ailleurs, je vais essayer tout de suite, rapidement...

Publié : mer. 02/nov./2005 10:34
par Dr. Dri
pour les fonctions particulières il faut regarder dans la doc. pour le reste on peut mettre ce qu'on veut à l'extérieur des procédures sauf du code qui s'exécute.

donc on peut mettre :
structures
globales
datasections
déclarations
constantes
etc

Dri

Publié : mer. 02/nov./2005 10:36
par Twix
merci (bien que je ne doute pas de toi ni de la doc, je vais quan meme verifier......)

Publié : mer. 02/nov./2005 10:40
par Chris
Les globales ne sont globales qu'à l'intérieur de le dll, c'est à dire qu'elles ne sont visibles que par les procédures qui sont dans la dll.

Elle ne sont pas visible par le programme qui l'appelle.

Publié : mer. 02/nov./2005 10:54
par Twix
je sais bien, le seul moyen sûr de communiquer avec un programme, dans une dll, c'est les paramètres et les ProcedureReturn.

Publié : mer. 02/nov./2005 13:29
par freddix
@Twix : Exactement :)

Publié : mer. 02/nov./2005 14:48
par Twix
Zut, j'arrive pas à envoyer mon code...

Bon, ben les deux fichiers se trouvent à cette adresse : http://twix.celeonet.fr/code
Les fichiers s'appellent structdll1.pb et structdll2.pb. Le premier, c'est la DLL, le deuxième c'est le programme.

Essayez, moi je n'ai rien vu de ce que ça devait être...

Publié : mer. 02/nov./2005 15:12
par cederavic
Il faut initialiser les variable, structures ect... dans AttachProcess (qui est appelé quand la dll est ouverte) :

Code : Tout sélectionner

ProcedureDLL AttachProcess(Instance)

  Global astring.s
  Dim alotofstring.s(5)
  Structure stru
    s.s
    b.b
    l.l
  EndStructure
  Dim astructure.StrU(5)

EndProcedure

ProcedureDLL DetachProcess(Instance)

EndProcedure

ProcedureDLL set(value.s)
  astring=value
  For a=0 To 4
    alotofstring(a)=value
  Next a
  For a=0 To 4
    astructure(a)\s=value
    astructure(a)\b=1
    astructure(a)\l=180124
  Next a
EndProcedure

ProcedureDLL get()
  
  MessageRequester("Test : Global",astring)
  For a=0 To 4
    MessageRequester("Test : Tableau",alotofstring(a))
  Next a
  
  For a=0 To 4
    MessageRequester("Test : Structure",astructure(a)\s)
    MessageRequester("Test : Structure","Devrait être égal à 1 : "+Str(astructure(a)\b))
    MessageRequester("Test : Structure","Devrait être égal à 180124 : "+Str(astructure(a)\l))
  Next a
EndProcedure

Publié : mer. 02/nov./2005 15:18
par Twix
merci bcp, mais chez moi ça marche toujours pas :cry:
je suppose que chez toi ça marche, cederavic ?

(WinXP, PIII, 128Mo et je vous passe les détails inutiles :oops: )

Publié : mer. 02/nov./2005 17:27
par lionel_om
Chez moi ca marche nickel :wink:

Publié : mer. 02/nov./2005 22:43
par LeCyb
Suffit de lire l'aide de Tailbite, tout y est expliqué :D