cs_candyraton
Messages postés109Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention 2 février 2012
-
8 déc. 2008 à 08:32
cs_candyraton
Messages postés109Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention 2 février 2012
-
15 déc. 2008 à 09:46
Nous pouvons appeller une dll perso de maniere direct comme ceci:
public ou Private person1 As New cls__outils
Private Sub Command1_Click()
MsgBox person1.Nbre_disque
end sub
ou de maniere indirect comme ceci:
Dim interfacedll6 As Object
Dim serveurdll6 As Object
Set interfacedll6 = CreateObject("madll.ServerInterface")
Set serveurdll6 = interfacedll6.objGetClassInstance("cls_outils")
CaptureWindow = serveurdll6.maprocedure(monarguementobjectouvariant)
Set serveurdll6 = Nothing
Set interfacedll6 = Nothing
Exit Function
D'aprés son auteur (source ici) l'appel indirect permet de" maintenir l'intégrité des instances des classes du projet."
Si quelqu'un pouvait expliquer, c'est introuvable:
1 est ce vrai?, y a t'il un risque pour l'intégrité des instances en appel direct?
2 combien peut-on appeler de fois de manière répété une dll appellée direct et déclarée public?
3 lorsque je mets en début de procédure dim person1 As New cls_outils, j'appel une nouvelle instance, c'est donc comme la maniére indirect n'est ce pas? même question: suis je limité
3 j'ai lu que les dll crées en vb étaient particuliéres, effectivement, l'appel n'est pas "classique"(Public Declare Function Putfocus Lib "user32" Alias "SetFocus" (..); Puis-je appeller ma dll de cette maniére?
4 ma dll vb6 va elle pouvoir être referencée par windows comme les siennes et pouvoir etre appellée depuis une appli de n'importe quel language?
Il est clair que cette question s'adresse à quelqu'un d'expérimenté.
Merci de m'(nous) éclairer sur ces questions.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 8 déc. 2008 à 08:54
conneries...
le code utilisé autour du CreateObject, c'est pour rendre la chose un peu dynamique. Si la dll change, peu importera a ton programme. Tant que les noms ne changent pas...
on peut imaginer un tel scénario, si le projet de la dll n'a pas été configuré, et que la compatibilité binaire n'a pas été activée...
en bref, on s'ajoute de la lourdeur (Late-Binding) pour rien
cs_candyraton
Messages postés109Date d'inscriptiondimanche 27 juillet 2008StatutMembreDernière intervention 2 février 20123 15 déc. 2008 à 09:46
Merci beaucoup renfield.
J'ai mis un moment à bien comprendre ta réponse, elle m'éclaircis finalement énormement.
ça n'était pas une question facile.
(nota: j'en profite pour exprimer à quel point j'ai apprécié nombres de tes talentueuses sources et commentaires (milles fois merci.)