Connexion entre DLL

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Connexion entre DLL

Message par Kwai chang caine »

Bonjour à tous

J'suis encore avec mes DLL.
Je vousdrais savoir, si à votre avis, c'est dangereux de charger une DLL1 dans une DLL2, pour utiliser certaines de ses fonctions.
Et dans cette DLL2 de charger la DLL1 pour la meme raison.

Merci de votre reponse, car je tourne en rond.
Je n'arrive pas à m'organiser :cry:

D'ailleur, j'ai remarqué que outre la programmation, une des parties les plus dures, c'est d'organiser son programme, pour pas qu'il se morde la queue :?

Merci de votre reponse
Bonne journée
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Salut, a mon avis les appels étant séparé il n'y a aucune raison que l'un ne puisse pas appeler l'autre et le contraire pour autant que cela soit dans des séquences d'appel différente... Ex: une partie de programme principal appelle DLL1 qui à besoin de quelque chose que fait DLL2 et l'appelle puis une fois terminé ressort de DLL2, puis de DLL1, plus loin une suite qui appelle DLL2 qui elle même pour une certaine condition appelle la DLL1 puis sortie de DLL1 et de DLL2 et la suite du programme continue...

Ce qu'elle ne peuvent pas faire c'est être récursive entre elle... Ce serait le serpent qui se mord la queue... (Plantage royal, a faire pendant les test sous Debug) !

Ou alors chaque DLL devrait inclure des processus de sorties dépendant de qui les appellent, c'est à dire être des "objets indépendants" à entrée/sortie multiple. Mais moi, généralement quand je faisait ce genre d'objets, ils faisaient aussi plusieurs choses différentes en fonction de la demande...

Ne pas oublier non plus que les procédures bien faites sont récursives et peuvent éviter de faire plusieurs DLL si dans sa récursivité on parvient à inclure un comportement variable en fonction d'une état de moment (ou état) de la récursivité...

Programmer c'est d'abord bien savoir ce que l'on veux. Puis faire un plan de travail. Isoler les taches communes et en faire des "outils" ou blocs presque autonome OU replacer les outils déjà fait pour d'autre applications dans le plan, puis créer les liens...

Un programme c'est une usine flexible, ou en déplaçant, réorganisant l'ordre des blocs déjà fait on obtient un produit différent... En liant le nouvel ordre bien sur. Et de temps en temps on crée un nouveau bloc parce que le sujet est nouveau... Cela évidemment quand on maitrise bien le langage et que l'on a déjà une bonne librairie... Les librairies, c'est rien d'autre... Et les gadgets non plus en plus petit morceaux donc beaucoup !
Et plus c'est soit même qui est l'auteur de ses librairies, plus on connait ses réactions et même ce qu'on peut y changer pour que cela aille mieux...

Mais je m'étends, et tout ça je crois que tu le sais déjà... :lol: Pendant que moi j'essaye toujours de comprendre les rouage de PB...
Bonne nuit !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Merci beaucoup de ta reponse GEBONET.
Elle me rassure un peu plus sur cette utilisation dont j'ai besoin.

Comme tu le dit si bien coder ce n'est pas le plus compliqué, sauf evidemment pour les fonction compliquées de haut niveau, acces memoire etc...

Ce que je me suis apperçu c'est tout a fait ce que tu as dit, c'est que j'arrette pas de faire et defaire mes prg, car je n'arrive pas a les structurer.
Comme je ne l'ai jamais appris, je ne sais pas faire un diagramme, et en plus j'ai bien essayé passez un temps, mais je n'ai pas le declic et la vision d'ensemble que cela devrais m'apporter.
En fait je suis electricien de formation et je ne conçoit pas une seule installation sans un shema soit dans ma tete, soit sur papier.
C'est mon metier et je l'ai donc appris et pratiqué dans les regles de l'art.
Mais pour l'informatique, j'ai appris en partant du milieu et dans n'importe quel sens, et je n'arrive pas dans ma tete a faire le rangement, malgre toute ma bonne volonté.
Comme un camion plein qu'il faudrait ranger les cartons sans en sortir aucun dehors :cry:
Comme je ne vois pas mieux, je perd mon temps, et comme j'ai au moins une cinquantaine de programme commencé et pas fini et dont j'ai tous les jours besoin, sans parler qu'au boulot ils ont une idée par jour :?
En plus c'est sur tous les domaines, FTP, HTTP, base donnée, OLE, etc.. tout le monde croit a mon boulot que rien n'ai compliqué car ils me demandent une appli et je me defonce des heures entieres 12h/jours et parfois les WE pour leur pondre a peu pres ce qu'ils veulent.
D'ailleur je tiens encore a remercier tous ceux qui m'aident, tous les jours tant sur ce site que les autres, car sans eux, je crois bien que j'aurais abandonné tous mes reves :cry:
Parfois, je bute sur une instruction pendant des jours, et tant que j'ai pas trouvé ou que on ne me l'a pas donné, je cherche car je ne suis jamais certain que ce soit "possible" et je me dis que si je passe cette instruction et que je continue a coder et que on m'apprend que mon idée est pas possible, ça fout en l'air tout ce qui suit.
Alors c'est pour cette raison, que je pose 100 000 questions qui n'ont rien a voir les unes avec les autres, et que je suis toujours préssé de la reponse :oops:

Pour les DLL par exemple, j'ai basé tous mes prg en cours et essais aussi de modifier toutes mes anciennes applis qui tournent actuellement pour qu'elle les utilisent et soit compatible.
C'est donc un immense challenge et risque que je prend en appuyant tout mon travail sur elles :oops:
Alors imagine que je fasse une connerie, c'est toutes mes années de travail qui partent en sucette :cry:

Donc pour en revenir a ma question, j'ai fait aussi des essais, et ça a l'air de marcher, je me suis aussi dit que comme on "charge en memoire" en fait on utilise pas vraiment le fichier, juste pour le charger apres il est en memoire pour l'appli qui l'a chargée.
J'avais peur moi que ça fasse comme quand windows il a mal fermé une appli et qui veut pas qu'on la reouvre.
Donc ça a l'air de marcher, j'ai meme carrement ouvert la DLL2 au tout debut de la DLL1 et au tout debut de la DLL2 j'ai ouvert la DLL1.
Et j'ai bien pris soins de les fermer correctement a la fin.
Donc apparement pendant tout le temps qu'elle fonctionnent elles peuvent partager leurs fonctions comme si elle n'etaient qu'une.
J'hesite encore pour une triangulation ou plus, mais je pense que ça doit aussi marcher, car quand y'en a pour 2, y'en a pour 3, non ??? :lol:

Donc ta reponse me conforte, merci encore, car elle ne sont pas recursives.
Il y en a une qui contient par exemple les fonctions mathematique, et l'autre les modules de cryptages.
Et evidemment celle qui crypte a besoin des fonctions mathematique, et celle qui a les fonctions mathematique a besoin du cryptage par exemple pour autoriser son ouverture.....

Je te souhaite une bonne journée
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

De rien, si cela t'a aidé... Et électricien, c'est presque une base obligatoire pour apprendre à structurer :lol: Donc tu est en avance sur celui qui ne sait pas ce qu'est un schéma... Ou un début et une fin... Ne pas oublier non plus que imbriqué ne pose aucun problème... C'est comme avec le "Gosub", il faut simplement pas oublier les "Return" correspondant...

D'ailleurs dans PB, il me manque un peu ces "SUB Machin (param,,,)", ou "param" fonctionne comme transmetteurs deux sens... Et aussi dans les ouvertures de fichier la forme "Random" avec définition de champs "Field".
Ici on peut ouvrir un fichier en longueur fixe, et y associer une zone mémoire correspondante... Dans laquelle on associe des pointeurs... (Field)
Mais, à mon avis la lisibilité était meilleurs sous la forme cité. Mais c'est une des rare critique de PB que je peux faire... Kaine, connait tu "http://www.freebasic.net/index.php/download" C'est pas mal du tout, gratuit pas nouveau un espèce de QB sous Windows ayant évolué avec ce que Windows lui permet... A Voir, il y a là d'ailleurs des choses a "prendre"...
A+
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Juste une question Kwai chang caine, il est ou pour toi le danger d'utiliser les dll comme tu veux le faire ?

Windows ne tourne qu'avec des dll, alors c'est très pratique pour figer des fonctions réutilisables par d'autres applications.

Denis
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bah comme j'y connais vraiment strictement quick aux DLL (Et pas qu'aux DLL, tout le monde le sait :D ) et que je connais le C que parce que c'est la troisieme lettre de l'alphabet.
Je suis en terrain inconnu, voir meme avec un bandeau, et une cerise dans chaque oreille :D
Celui qui manipule le C, a deja une idée plus precise de ces merveilles, car il faut bien dire que c'est des merveilles.

J'arrive du VB6, ou j'etais deja pas bon, alors imagine mon niveau :lol:
Et comme tout le monde le sait le VB6 ne sait pas faire de DLL, sauf ces daubes d'activeX qui n'en sont pas en fait.

Donc, quand on y connais vraiment rien, on ne sait primo pas les utiliser, mais surtout ce qu'elles impliquent au niveau memoire et tout le toutim.
Car c'est pas parce que l'on sait cocher shared a la place de exe dans le compilo de PB, qu'on sait ce qu'est une DLL :roll:

Deja dans les EXE, y'a pleins de fonctions que j'utilise mal et qu'apres on me dit au bout d'un an, que je bouscule la memoire et qu'il faut pas faire comme ça :?

Et comme la, ça va etre la base de toutes mes applis, je flippe un peu dans l'attente de l'hypothetique POST d'un des amis du forum qui veux m'aider en me disant :

Ouh la la !!! les DLL ça fait pas ça, ou plutot ça ne sert pas à ça !!! 8O

Et alors la, le KCC il se liquefie, comme le T1000 de terminator.....ou plutot comme une bouse de vache, une vacheminator en fait :lol:

Donc, je vis dans le stress, tant que je n'ai pas tout mis en place, et que j'ai pu constater que tout gazouille et pendant un bon moment.

Il faut dire qu'une DLL qui appelle deux ou trois autres, et qui se fait appeller aussi par celles qui viens d'appeller, ça a le merite quand meme de generer un petit peu de soucis, pour un novice, enfin un ignare comme moi.
Et comme en plus j'suis un anxieu de nature ......

J'ai deja appris grace a un emminent membre du forum US que fallait surtout pas ouvrir une DLL dans un attachprocess, car ça causait noir de bousculade dans la memoire, ni la fermer dans le detachprocess.
J'avais tout fais comme ça :?
Je les ai donc toutes modifiées.

J'ai le groin en l'air et j'attend la prochaine tuile :D

C'est vrai que des tutos sur les DLL en PB, on peut pas dire que ça cours les rues, ou alors en anglais, mais j'ai deja bien assez de mal en français, moi et google translate on est en pleine tempete dans certains POST comme NETMAESTRO, SROD SPARKIE, etc .... :D

Voila, mais maintenant KCC il est toujours petit, mais il a mis des pompes a big talonettes, et il arrive a jouer dans la cour des grands.
C'est encore les toilettes de la cour des grands, mais c'est la cour des grands quand meme :D
Et pour ce faire, les grands, ils utilisent les DLL, alors KCC et ses talonettes il utilise aussi les DLL, et surtout il structure, enfin il essait, de structurer ces application, au lieu d'ecrire 20 fois le meme code dans toutes ses applis que ce soit VB ou PB

Voila mon bon DENIS
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Ben alors ne te tracasse plus... Et considère une DLL pour ce qu'elle est :

Soit comme un petit programme "exe" qui est limité à ce pourquoi il a été conçu... Exemple : le programme, donc la "Dll" est capable de trier un tableau deux dimensions, si on lui envois et qu'on lui dis c'est à partir de quelle colonne du tableau qui faut le trier les lignes.... Soit part exemple :
Call Trie(Tableau.s(Nbligne, colonne), SurCollonne) avec colonne=2... Elle doit trier ce tableau de Nbligne selon l'ordre du contenu de la colonne 2... A partir de ça tout les tableaux de ce type pourront être trié par cette "Dll". La seule contrainte de ne pas oublier de l'ouvrir par OpenLibrary(#Bibliotheque,"SonNOM.dll") et de la fermer par "CloseLibrary(#Bibliotheque)"

Donc, chaque morceau de programme qui peut faire un travail finit "sur ordres" peut devenir "Dll" que l'on appelle quand on en à besoin. Et ne t'engage pas à les faire appeler les unes par les autres, car c'est là qu'elle peuvent se marcher sur les pieds... Une règle pour moi, plus c'est simple mieux c'est, et après quand tout marche... Alors et seulement alors on essaye d'optimiser, faire beau etc... :lol:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Donc, chaque morceau de programme qui peut faire un travail finit "sur ordres" peut devenir "Dll" que l'on appelle quand on en à besoin. Et ne t'engage pas à les faire appeler les unes par les autres, car c'est là qu'elle peuvent se marcher sur les pieds...
Oui justement c'est la que le bas blesse
Au debut, j'ai fait une 20aine de prog qui tournaient tous independement.
Puis, j'ai voulu crypter une clef d'activation pour chacun, puis j'ai fait toujours les meme panneaux pour chacun, les memes fonctions, le meme module OLE.
Je me suis dit au bout de x programmes, je vais les mettre dans un berceau, style pack office.

Et c'est la que les atheniens s'atteignirent

Je me suis rendu compte des doublons de codes, et je me suis dit que si elles allaient etre dans le berceau, ça serait bien que ce soit tous des bébés, pas des clef a molettes avec des lave vaisselles :lol:
Fort de cette constatation, j'ai commencé a rechercher tout ce qui pouvait etre mis en fonction au lieu d'etre ecris X fois dans chaque prg.
Et apres j'ai recherché dans ces fonctions, lesquelles etaient communes entre prg.

C'est donc la que la DLL s'est imposée.

J'ai donc créé une DLL systeme (NomMachine, NomUtilisateur, AppPath, IpMachine, etc), une pour le cryptage, une pour les fonctions communes(Mathematique, travaux sur le texte, sur les fichiers, les repertoires, etc ..), une sur la gestion OLE, une pour les panneaux(Mon msgbox, mon gestionnaire de ini, gestionnaire de traceur, etc ...), .....
Et c'est la que y'a eu une couille dans le fromage :?
Je me suis apperçu que la DLL de cryptage avait besoin des fonctions math, et que la DLL math avait besoin des fonctions texte, que la DLL panneau avait besoin des fonctions de decryptage, etc...

On m'a aussi conseillé de ne creer qu'une seule DLL, le probleme c'est que ça fait un monstre avec noire de fonctions.

Je me suis mis alors a utiliser les PBI, pour classer par fonctions.
Apres j'ai eu le bleme que quand je voulais modifier un PBI, il n'etait jamais chargé.
J'ai donc recherché et trouvé ce super code sur le forum US qui permet de modifier l'IDE natif afin qu'il telecharge tous les PBI qui sont dans le programme "Maitre".Grace a lui, maintenant je clique sur la 1ere DLL et hop, j'ai 10 pbi qui s'autochargent :D

Bon une fois tous ce chemin parcouru en un mois, parce que on dirait pas mais j'essai de vous la faire courte :lol:

Je me suis apperçu que parfois je ne voulais pas crypter, ou bien je faisait une mini appli qui n'avait besoin qu'une 10aine de fonction donc juste des fonctions systeme, et un ou deux panneaux, ce qui m'a encore obligé a les remodifier, pour pouvoir ne pas mettre la DLL cryptage si elle n'est pas necessaire, etc..
J'en suis donc arrivé finallement à 4 DLL actuellement qui fonctionnent entre elles, mais qui ne sont pas toutes necessaire selon mon prg.

A rajouter la cerise sur le couscous, c'est qu'il a fallu que ça marche aussi avec VB6, je vous parle pas des retour tableau entre VB et PB, ou le forum français m'a drolement bien aidé, j'en pouvais plus.

Donc voila tout ça pour t'expliquer, que vu l'ampleur de ce que je voudrais faire, j'suis un peu obligé de les faire se croiser.
C'etait donc tout l'interet de ma question :wink:

Mais c'est sur que des que je peux eviter ....

Apparement du coté VB on m'a aussi dit que windows avait plein de DLL qui se croisaient puisque c'etait aussi un peu leur mode de fonctionnement de parler entre elles, et que VB savait gerer tout ça.
Si VB sait, PB sait c'est obligé :wink:

Donc je pense que je ne suis pas trop sur une mauvaise route, et que je commence a coder comme les "vrais".
Et ça ça m'emplie de joie, jusqu'a la prochaine trouille.

Mais.......Je reste le groin en l'air :lol:
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Ok , je suis bien...
J'ai donc créé une DLL systeme (NomMachine, NomUtilisateur, AppPath, IpMachine, etc), une pour le cryptage, une pour les fonctions communes(Mathematique, travaux sur le texte, sur les fichiers, les repertoires, etc ..), une sur la gestion OLE, une pour les panneaux(Mon msgbox, mon gestionnaire de ini, gestionnaire de traceur, etc ...), .....
Et c'est la que y'a eu une couille dans le fromage Confused
Je me suis apperçu que la DLL de cryptage avait besoin des fonctions math, et que la DLL math avait besoin des fonctions texte, que la DLL panneau avait besoin des fonctions de decryptage, etc...
Mais entre une nuées de trop petite et une ...
On m'a aussi conseillé de ne creer qu'une seule DLL, le probleme c'est que ça fait un monstre avec noire de fonctions.
Il y a une marge qui est la synthèse d'ensembles rationnel de choses qui généralement marchent ensemble ou qu'on a besoin ensemble et que l'on place dans des généralistes de types différentes.... Avec des trous, mais qui deviennent limité, ce qui est quand même simplifiant... Quitte à avoir des "blocs" contenant des choses redondant !

ET puis, et puis PB est arrivé, et avec il y a "TailBite" et la Dll peut devenir "Lib", du même coup cela devient des "Userlib" et du montage de "mécano" optimisé par PB :lol: Je suppose que tu l'as déjà essayé !
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Je suppose que tu l'as déjà essayé !
Ou la non....pas encore, j'en entend bien parler depuis que je suis sur le forum, mais encore un domaine ou j'y connais fifre :oops:
Et puis en plus, mon probleme c'est d'etre dans une cage en metal avec noir de public autour de la cage, un fouet, une grande baguette, et au milieu deux tabourets.

Sur le premier un gros nounours balourd, mais puissant quand meme et donc dangereux.
Sur l'autre un tigre blanc, leger, puissant, rapide donc encore plus dangereux :D

Et faut que j'arrive a leur faire danser la valse d'ici quelques années.
Un deux trois, Un deux trois, allez hop les pattes en l'air et un bisou :lol:

Car mon probleme, c'est qu'au boulot, y'a que du VB, et moi j'me bas avec mon fouet (Tiens, au fait, j'ai pas de tenue en cuir :lol:) pour imposer PB.
Alors mon but, c'est d'essayer de faire des programmes ou cohabitent les programmes dans la meilleure harmonie, qu'elle que soit leur language.

Alors pour ce faire, seul les DLL sont universelle, je crois.

Mais c'est vrai que les lib, c'est top apparement.
Y'a un truc que j'ai pas compris (Comme si y'en avait qu'un seul :lol:)
Quand on fait une DLL, ça créé bien une LIB.
Et cette LIB, c'est pas la meme que celle crée avec taillebite ???
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Oui en même temps ! Mais si effectivement tu veux que cela puisse passer d'un langage à l'autre, c'est la Dll... La doc TailBite est assez claire, en anglais, courte pour savoir de quoi il retourne avec un exemple d'entrée très explicite. Et j'ai vu que pour toi, l'anglais, il n'y avais pas trop de problème pour cela.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Et j'ai vu que pour toi, l'anglais, il n'y avais pas trop de problème pour cela
Bah, j'suis content que y'en a au moins un français qui comprenne mon anglais :lol:
Car, si tu me voyais moi et mon pote google, pour comprendre et ecrire un POST, il me faut parfois 1 heure :oops:
CHRIS y serait content, car j'en met le minimum :lol:
Et malgre ça, j'ai souvent du mal a me faire comprendre.

Et la difference entre une lib faite par le compilo et par taillebite, y'en a une ou bien c'est exactement la meme chose ????
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Là, :roll: Sais pas trop, car trop nouveau avec PB et ses cohabitants... En temps absolus ça fait 2 mois de travail sur PB alors :? Mais en terme de savoir global... 31 ans seulement :lol: Avec une pause les 7 dernières années et reprise "grace" ou à cause de PB... D'où neurones n'étant plus tout à fait d'accord entre eux :lol:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Qu'as tu fait comme language avant ??
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Ben... Parti de l'Assembleur en passant par du Fortran, le Cobol, Pascal, évidement les diverses version de MS Basic sur Micro des années 77-84, (ma première machine=4K... et mêm 1k avec Spectrum, Tu peux imaginer ce que c'est ?) Les OS principalement CPM avant le DOS le Flex (super) et son Sbasic, Les turbo de Borland... Puis créer et commercialisé (En France et en Belgique) un générateur de programme sur des base QB et Routines Assembleur de 1987 à 1992, Collaboré avec PC-SOFT de Montpellier (Windev 1.0), Touché au Prolog, Delphi etc... J'étais sur le point de passer ce générateur sur VB vers 1995, quand le projet de partir vivre au Brésil est arrivé, ce que j'ai fait, en 1998 et depuis plus de code... Du soleil, et du soleil... Puis me revoilà... Cloué a mon fauteuil avec des problème de dos ! Et reprise du clavier... tentative de m'y remettre, mais c'est compliqué, après un trou de 1995-96 jusque février de cette année... Voilà, tu sais tout :lol: Enfin presque 8)
Répondre