Passage de chaînes longues dans une DLL

Résolu
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 20 mai 2008 à 22:22
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 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.

Bref est ce que c'est jouable ?

merci par avance

cantador

6 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
20 mai 2008 à 23:40
Récapitulation : avec les PChar, aucun de ces inconvénients en vue.
Ouf, me voilà rassuré

May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
21 mai 2008 à 01:33
petite demo de code :

Delphi DLL et String.zip

<hr size="2" width="100%" />
3
cs_Shai Messages postés 50 Date d'inscription mardi 8 octobre 2002 Statut Membre Dernière intervention 21 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 ...


Voir ICI




<hr />
Shai Le Troll
!! Aide via F1 !! Pensez-y !! 
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le conf
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
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.
0

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

Posez votre question
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
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..

merci pour ton aide delphiprog

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
22 mai 2008 à 23:18
merci Shai pour le lien.

cantador
0
Rejoignez-nous