OVH Cloud OVH Cloud

DLL en VB. Une confirmation SVP

5 réponses
Avatar
André Joubert
Bonjour,
J'accumule au fil des jours des routines que
j'utilise fréquemment. J'aimerais pouvoir les compiler
et les placer dans une librairie ou un DLL.
Il me semble que ce ne soit pas faisable avec VB.
J'ai réussi à placer une classe dans un activeX DLL avec
succès. Mais pas un module pour faire comme un API.
Voici mes 2 questions:
1) Est-ce que mes affirmations sont exactes?
2) Est-ce les mêmes restrictions s'applique à VC++
Il y aurait peut-être une façon de convertir VB en C++

Merci à l'avance
André Joubert

5 réponses

Avatar
Sundowne
'Jour
J'accumule au fil des jours des routines que
j'utilise fréquemment. J'aimerais pouvoir les compiler
et les placer dans une librairie ou un DLL.
Il me semble que ce ne soit pas faisable avec VB.



Cela est parfaitement possible par une dllActiveX . Tu dois systématiquement
passer par la classe de la dll pour appeler les fonctions de la routines :
Exemple :

dans la Dll activeX Amoi
Dans la classe CMaclasse
Public function CMaFonction( param1 as long, param2 as string) as long
CMaFonction = MMonmodule.MMafonction(param1 as long, param2 as
string)
end function

Dans le module MMonmodule que tu ta rajouté à ton projet de dll
Public function MMaFonction( param1 as long, param2 as string) as long
MMaFonction = .. mes calculs ...
end function

Dans ton prgm
Dim MonAccesAMaDll as Amoi.CMaclasse
Dim Resultat as long

set MonAccesAMaDll = new Amoi.CMaclasse
Resultat = MonAccesAMaDll.CMaFonction(MonParam1, MonParam2)

Comme tu le vois cela n'est pas un modéle de légéreté! A noter que dans la
dllActiveX tu peut tout mettre, classes , Modules , feuilles... que tu peux
manipuler à ton aise à partir de ton prgm en utilisant la variable objet
sous réserve que les fonctions correspondantes figurent dans la Dll et
qu'elles soient publiques !

2) Est-ce les mêmes restrictions s'applique à VC++


Quant à VC++ on peut tout en faire, sous réserve de savoir le maitriser
;-))

Il y aurait peut-être une façon de convertir VB en C++


Une "convertion" mécanique est conceptuellement une hérésie ! (enfin
selon moi ...) . Ceci dit on peut bien sur parfaitement réécrire le prgm en
VC++

@+

"André Joubert" a écrit dans le message de
news:UdHSa.1943$
Bonjour,
J'accumule au fil des jours des routines que
j'utilise fréquemment. J'aimerais pouvoir les compiler
et les placer dans une librairie ou un DLL.
Il me semble que ce ne soit pas faisable avec VB.
J'ai réussi à placer une classe dans un activeX DLL avec
succès. Mais pas un module pour faire comme un API.
Voici mes 2 questions:
1) Est-ce que mes affirmations sont exactes?
2) Est-ce les mêmes restrictions s'applique à VC++
Il y aurait peut-être une façon de convertir VB en C++

Merci à l'avance
André Joubert




Avatar
Ledev
"François Picalausa" a écrit sans être assez précis
dans le message de news:


Dim MaClasse As MyClass



préférer as MyLib.MyClass, c'est plus propre et en plus sa évite les
problémes quand y'a 2 classe qui porte le même nom dans des libs différents
;-)
Avatar
Ledev
"François Picalausa" a écrit dans le message de
news:
Bonjour/soir,

Je dirais que ça dépend de tes besoins...
Si il y a collision de nom, MyLib.MycClass oui.. mais sinon, c'est


converti
en interne donc, aucun problème...

question propreté, alors je te dirais que pour Mid$, il faut caractériser
complètement aussi:
VBA.Strings.Mid$(...)
Aisi que lors de l'emploi du contrôle sur ta feuille...
Projet1.Form1.Text1.text = "Toto"
Et pour une fonction qui afficherait en messagebox le contenu d'un


textbox:
Sub MsgBoxFromTextBox(TextBox As VB.TextBox)
MsgBox TextBox.Text
End Sub



Ouai enfin, là, tu fait dans l'extréme :O)

Je pense que oui, ça peut aider (et je l'emploie souvent d'ailleurs) pour


la
lisibilité dans certains cas.. mais dans d'autres, ça peut faire tout le
contraire...
Donc, il faut d'abord voir les circonstances, le contexte pour déterminer
s'il faut ou non caractériser complètement.
Et dans le cas d'un projet contenant une classe (ce qui peut être pratique
pour ajouter ses fonctions perso.. juste à ajouter une classe déjà faite),
je n'emploie que rarement As Nomprojet.NomClasse



Moi la aussi je ne met que le nom de la classe.

En faite, je dirai que quand c'est dans l'objet courant(par exemple, tu est
dans la feuille), on peut se passez du nom de cette objet(donc NomProjet
peut être homie), mais quand ce n'est pas l'objet courant(genre une lib, une
autre feuille mais là c'est obliguatoire...), pour la lisibilité, vaus mieux
le mettre.

Mais de toute maniére, la lisibilité, c'est chacun fait comme il se sens le
mieux.

a+

--



François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


Ledev wrote:
> "François Picalausa" a écrit sans être assez
> précis dans le message de
> news:
>
>>
>> Dim MaClasse As MyClass
>
> préférer as MyLib.MyClass, c'est plus propre et en plus sa évite les
> problémes quand y'a 2 classe qui porte le même nom dans des libs
> différents ;-)




Avatar
4B Ingenierie
Salut,

Pour répondre à ta question, c'est tout à fait possible avec VB de créer une
dll qui exporte ses fonctions comme n'importe quelle API.
Pour cela il existe un produit gratuit "VB GUI LINKER" que tu pourras
trouver à l'adresse suivante.

http://lockfree.50megs.com/linker.html

En plus il est écrit en VB et livré avec les sources.
N'hésite pas à me solliciter pour d'autres questions du même genre.

Dominique LEBLANC





"André Joubert" a écrit dans le message de news:
UdHSa.1943$
Bonjour,
J'accumule au fil des jours des routines que
j'utilise fréquemment. J'aimerais pouvoir les compiler
et les placer dans une librairie ou un DLL.
Il me semble que ce ne soit pas faisable avec VB.
J'ai réussi à placer une classe dans un activeX DLL avec
succès. Mais pas un module pour faire comme un API.
Voici mes 2 questions:
1) Est-ce que mes affirmations sont exactes?
2) Est-ce les mêmes restrictions s'applique à VC++
Il y aurait peut-être une façon de convertir VB en C++

Merci à l'avance
André Joubert




Avatar
André Joubert
Un gros merci à tous,

C'est vraiment très instructif, j'ai appris plus que ce je
demandais. C'est très gentil de votre part.
Je peux maintenant prendre décision éclairée sur l'avenir
de mes routines communes.
André




"André Joubert" wrote in message
news:UdHSa.1943$
Bonjour,
J'accumule au fil des jours des routines que
j'utilise fréquemment. J'aimerais pouvoir les compiler
et les placer dans une librairie ou un DLL.
Il me semble que ce ne soit pas faisable avec VB.
J'ai réussi à placer une classe dans un activeX DLL avec
succès. Mais pas un module pour faire comme un API.
Voici mes 2 questions:
1) Est-ce que mes affirmations sont exactes?
2) Est-ce les mêmes restrictions s'applique à VC++
Il y aurait peut-être une façon de convertir VB en C++

Merci à l'avance
André Joubert