cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
20 mai 2008 à 22:22
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
22 mai 2008 à 23:18
Bonsoir à tous,
Je vais être obligé de passer des chaînes longues(mail, texte, etc) en paramètre dans une DLL.
Avant de me lancer dans l'écriture des programmes, je souhaiterais savoir si
quelqu'un a déjà rencontré des difficultés dans cet exercice, non pas pour créer et intégrer la DLL mais
dans le fonctionnement de l'ensemble.
cs_Shai
Messages postés50Date d'inscriptionmardi 8 octobre 2002StatutMembreDernière intervention21 décembre 2011 22 mai 2008 à 12:52
juste pour info, si l'on passe une string en const, cela fonctionne très bien puisque BordelMM est uniquement utile pour la ré-allocation de chaine ... d'ailleurs faire passer un paramètre en const, je rappele que cela fait passer uniquement un pointeur, ... donc on ne recopie pas la chaine, c'est comme si l'on faisait passer un pointeur sur TStrRec ...
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 20 mai 2008 à 23:16
Venant de toi, la question m'étonne un peu et j'ai peur qu'elle en cache une autre.
Pourquoi n'utilises-tu pas des PChar comme c'est conseillé dans les commentaires créés automatiquement avec l'assistant DLL ?
May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 20 mai 2008 à 23:31
Voilà ce qu'on peut lire dans un tuto :
avec le type shortString : no problems..çà marche nickel.
mais :
L'autre différence avec un fichier DPR d'application est le long commentaire ajouté par Borland au début du fichier.
Il donne quelques informations sur des précautions à prendre lors du développement de DLL dans Delphi. En effet, le type string dans Delphi est un type particulier dont la gestion en mémoire diffère de la gestion des chaînes de caractères par Windows. Ainsi Borland prévient que, si vous comptez faire transiter des variables de type string entre votre DLL et les applications qui l'utilisent, il vous faudra :
<li>Ajouter 'ShareMem' en première position dans la clause uses de votre DLL et des applications qui l'utiliseront
</li><li>Déployer la DLL 'BORLNDMM.DLL' (Borland Memory Manager) avec votre propre DLL.
Cette bibliothèque de Borland remplace le gestionnaire de mémoire par défaut de votre DLL dans le but de permettre l'échange en mémoire de vos variables de type string. </li>
Autant dire que ce n'est pas vraiment avantageux d'utiliser des string avec des DLL ! Cela limiterait d'ailleurs leur emploi à des programmes incluant ShareMem, donc des programmes Delphi.
et comme je me méfie de ce genre de construction, j'essaie d'en savoir un peu plus..