cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 12 oct. 2005 à 15:12
Passer par des dll ActiveX en regroupant tes forms par lots (exemple :
gestion des clients, fonctions de recherche, mise à jour du programme,
etc.) qui seront implémentées non plus dans un seul projet exe, mais
dans plusieurs projet dll ActiveX.
Ensuite, il te faudras réfléchir à une logique d'appel entre tes feuilles pour savoir quelle dll devoir appeller.
Bref, il faut reréfléchir à toute l'architecture de ton programme, et
crois moi, lorsqu'un programme fonctionne bien et qu'il faut pouvoir
tout repenser pour obtenir autant d'efficacité sans faire apparaître de
nouveaux bugs, ce n'est pas une chose facile ! Il aurait fallu y penser
dès la conception du prog !
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
m2rtech
Messages postés239Date d'inscriptionmercredi 9 octobre 2002StatutMembreDernière intervention20 février 2012 12 oct. 2005 à 15:27
Merci Darksidious.
C'est ce que je pensais. Problème c'est lorsque j'ai commencé à ecrire
mon programme j'étais encore débutant (peut encore maintenant), et
je cherchais la facilité.
Chemin faisant, il aurrait fallu passer tout doucement dans cette technologie.
Aujourd'hui le prog marche super (chez des clients) et aller tout chambouler...
Je pense me concernant, et surment chez bien d'autres que le probleme
se pose aussi pour VB.NET. On maitrise un language et on a un prog qui
marche. pourquoi allez dans les sables mouvants?
Je pense que la réponse est dans les cas DLL activex et le passage à
VB.NET envisageable que dans des nouveaux projets. Et je te
rejoins, en concluant que ce qui marche, FAUT pas y toucher.
Néanmoins, est ce que pour pour faire des essais, je peux envisager de
créer une DLL activex pour chaque form, pas formcement par lot ?
merci de ta très rapide réponse. ça c'est de l'Admin...
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 12 oct. 2005 à 15:41
Ouch, une dll par feuille, là par contre, cà risque d'être très très lourd à utiliser ! (à tester cependant).
Un appel à une fonction d'une dll ActiveX est toujours plus lent qu'un
appel à une fonction interne à un programme (donc les appels de
fonctions internes aux dll sont également plus rapides).
Bien entendu, tu peux rajouter au fur et à mesure quelques feuille à
une dll, tout en gardant la compatibilité binaire, cela ne devrait pas
poser trop de problème, et ca alégerais au fur et à mesure ton
programme principal qui sera moins long à charger, prendra moins de
place en mémoire, etc.
Si tu avais fait des classes, ca aurait été bien plus simple pour porter ton prog en dll !
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 12 oct. 2005 à 21:20
QUOI ??? Alors là désolé de te contredire rt15, mais ca fait 1 an que
je bosse sur un projet utilisant une dizaine de dll activeX contenant
des feuilles, des classes et des modules, qui sont mises à jour toutes
les semaines environ chez le client, et je n'ai jamais eu à recompiler
l'exe principal (qui ne fait qu'une dizaine de ligne, en fait il ne
fait qu'appeler une dll main).
Avant de se lancer dans la programmation des dll, il faut comprendre
comment ca marche : si tu ne modifie pas l'interface de ta dll (donc
les prototypes de tes fonctions), tu n'as pas besoin de tout recompiler
: une compilation de ta dll en mode compatibilité binaire, tu envoie la
dll au client, il remplace l'ancienne par la nouvelle, et hop, le tour
est joué, même pas besoin de réenregistrer dans le registre étant donné
qu'elle est 100 % compatible avec l'ancienne !
Après, c'est sûr, si tu modifier l'interface de ta dll tout les jours,
tu es obligé de tout recompilé, mais là, c'est une question de
conception : si tu as bien pensé ton interface depuis le départ, tu n'a
pas à tout recompiler, bien au contraire (ou serait l'intérêt des dll
sinon !).
C'est pour cà que je conseille vraiment de faire des dll pour tout les
projets devant avoir des mises à jour, ca évite d'envoyer un gros exe
de 1 ou 2 Mo, et de n'envoyer qu'une petite dll de quelques Ko à la
place !
Quant à ta source, elle est à l'opposé de ce que décris Microsoft dans
son manuel de référence : Microsoft insiste bien de ne pas utiliser les
liaisons tardives, à moins que ce ne soit vraiment indispensable, car
vraiment TRES TRES lent par rapport à la liaison précoce ! Donc lorsque
tu recompile ta dll, coche le mode compatibilité binaire, et tu verra,
c'est magique : tu n'a plus à tout recompiler pour déployer ta dll !
Voilà, c'était mon coup de gueule de la soirée pour dire qu'IL FAUT
utiliser des dll, et arrêtez de dire que les dll sont difficiles à
utiliser, ce n'est pas vrai, il suffit juste de savoir les utiliser
comme il faut.
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 13 oct. 2005 à 09:58
J'ai parcourus ce site un certain temps, et je n'avais j'amais entendu parler de cette case à cocher. Effectivement, si elle fonctionne, il faut référencer et employer des dlls.
m2rtech
Messages postés239Date d'inscriptionmercredi 9 octobre 2002StatutMembreDernière intervention20 février 2012 13 oct. 2005 à 10:07
Hou la, ca c'est du forum...
Merci de votre intervention à tous les 2.
J'ai bien lu je vois déja un gros problème. recompiler L'exe principal
(qui est en va dire chez les clients), si on touche à l'interface.
(remarque de DARK)
Or moi qui ne connais pas la programmation des Dlls, je voiyais ces
dernières comme des fonctions. Fonctions que l'on appel suivi d'une
série d'arguments. OR si on ne touche pas à l'appel des arguements, je
ne trouve pas logique qu'il faut recompiler meme si on touche à
l'interface. du moment que son acces ne change pas.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 13 oct. 2005 à 11:12
m2rtech : des dll "véritables" codées en C (celle dont tu décrit) ne peuvent pas t'intéresser car :
1/ Elles doivent être compilées en C
2/ Ne peuvent pas contenir du code VB et des feuilles VB => il faut tout recoder
Par contre, les dll ActiveX, compilées en VB sont celles qui faut
utiliser dans ton cas, et là, pas besoin de déclaration de fonction
comme les API, juste une référence à mettre sous VB (menu
Projet/Références) et tu l'utilise comme une classe rajoutée à ton
projet.
Maintenant, il faut distinguer aussi l'interface d'un ActiveX de
l'interface d'une feuille : par interface d'une feuille, je parle de
contrôle, de bouton etc., ca c'est pas un soucis pour la compatibilité,
par contre, l'interface de l'ActiveX, ce sont les fonctions exportées
directement appelables de l'extérieur, et là ca peut poser problème.
Par exemple, si tu as une fonction nommée ShowForm(byval iArgument As
Integer) As Boolean que tu compile ta dll, une fois compilée, il faut
garder le même protoype de cette fonction, sinon, ca ne sera pas
compatible (logique !).
Donc tu n'a pas le droit de modifier :
1/ Le nom de ta fonction
2/ Le type de retour
3/ Le type des arguments
4/ Le type de passage des arguments (par valeur ou par référence).
Mais il ne s'agit que des fonctions publiques des classes exportables,
et non de tout ce qui touche aux feuilles ou au modules, etc.
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/