Création d'un patch

Résolu
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012 - 12 oct. 2005 à 15:04
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 14 oct. 2005 à 13:08
Salut,

J'ai développé un programme de gestion entièrement en VB6.

J'ai plus d'une centaine de FORM.

Je n'ai aucune classe.

Ma technique de programmation est entièrement procédurale.

Mon problème réside principalement dans le fait qu'en cas de BUG dans une FORM ,

je doit bien sur corriger et recompiler l'EXE dans son intégralité puis
diffuser l'EXE qui commence à faire plus de 5Mo. ça fait un gros patch !

Quelles solutions s'offrent à moi dans cette configuration ?



merci

13 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
14 oct. 2005 à 13:08
ERRATUM: le CLSID change effectivement à chaque compilation en mode sans compatibilité. Désolé.
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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/
0
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 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...
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
12 oct. 2005 à 19:52
Salut à toi, oh DarkSidious.

Que vois-je, on embrigade à faire des dlls ActiveX ?

Je peux pas laisser faire ça !!!!!!!!!!!!!

Plus sérieusement, je précise juste que si on recompile une dll ActiveX, il faut recompiler tous les executables où elle était référencée.

Je te conseil de comprendre la sinification de cette phrase avant de lancer dans une dll ActiveX.

Pour cela tu peux consulter ce source:
http://vbfrance.com/code.aspx?ID=32111
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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/
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
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.
0
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 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.



qu'en pensez-vous ?



cordialement.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
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/
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
13 oct. 2005 à 14:25
Ca doit être la meilleurs nouvelles que j'ai eu depuis un mois.

La case à cocher compatibilité binaire est dans l'onglet composant des propriétés du projet de la dll.

Je suis tout chose.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 oct. 2005 à 14:32
lol, ben tu vois, les dll, c'est vraiment génial ;)



Donc plus besoin de référence tardives très lente, plus de recompilation de tout les projet, etc.


Les dll perdraient beaucoup d'intérêt si on ne pouvait pas les compiler sans devoir tout recompiler !

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012
13 oct. 2005 à 17:10
Merci Sidious



J'ai mes bouquins VB qui commence à dater, n'aurais tu pas un exemple de projet VB

2 ou 3 feuilles maxi employant une Dll Activex ?

juste pour voir la technique.



meric d'avance.
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 oct. 2005 à 17:18
Non, les seuls projets que j'ai avec des dll sont utilisés par mes
projets professionnels, mais tu devrait pouvoir en trouver dans les
sources :


_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
0
Rejoignez-nous