![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Simuler les anciens tableaux de chaînes Ansi est compliqué, mais toujours possible. (Cela va dépendre du bon comportement de la DLL, en particulier si elle renvoie des données à MQL4 en modifiant le contenu du tableau. Je n'ai testé cela que contre l'exemple de code C++ en bas de page, pas contre quelque chose de plus réaliste comme la bibliothèque MySql).
Par exemple, le code ci-dessus fonctionne avec la DLL suivante qui fait une boîte de message pour chaque chaîne dans un tableau, puis inverse la chaîne avant de la renvoyer à MT4 :
Je ne peux tout simplement pas expliquer à quel point vos extraits sont utiles. Merci beaucoup ! J'ai écrit un wrapper MySQL en MQL4 pur (pour la version UNICODE) qui communique avec libmysql.dll (ANSI) en utilisant les techniques que vous avez mentionnées et celles que j'ai trouvées dans la bibliothèque MySQL d'EAX (MQL5).
J'apprécierais vraiment que vous jetiez un coup d'oeil à mon code et que vous me fassiez part des choses à améliorer ou que vous y contribuiez, car je suis certain qu'il peut être amélioré.
gchrmt4,
Pouvez-vous me montrer comment je peux faire passer une chaîne de caractères par un appel de fonction DLL, ou m'indiquer un exemple de code ?
Ce que je cherche est la confirmation que je peux faire un appel tel que :
#import
int call_a_string_function(string this_is_a_string) ;
#Importation
...
...
string foo1 = "ceci est une chaîne" ;
int retruncode = call_a_string_function(foo1) ;
alors à quoi ressemblerait le code C pour la fonction ci-dessus ? Je cherche simplement l'exemple de la routine.
Par exemple
int call_a_string_function(char *this_is_a_string) ;
etc
Certaines personnes disent qu'il faut utiliser un tableau ou un tableau de caractères, etc. Je cherche une clarification. Juste un simple échantillon sur la meilleure approche car vous avez mentionné la fuite de mémoire, etc.
salutations
gorick
gchrmt4,
Pouvez-vous me montrer comment je peux faire passer une chaîne de caractères par un appel de fonction DLL, ou m'indiquer un exemple de code ?
Ce que je cherche est la confirmation que je peux faire un appel tel que :
#import
int call_a_string_function(string this_is_a_string) ;
#Importation
...
...
string foo1 = "ceci est une chaîne" ;
int retruncode = call_a_string_function(foo1) ;
alors à quoi ressemblerait le code C pour la fonction ci-dessus ? Je cherche simplement l'exemple de la routine.
Par exemple
int call_a_string_function(char *this_is_a_string) ;
etc
Certaines personnes disent qu'il faut utiliser un tableau ou un tableau de caractères, etc. Je cherche une clarification. Juste un simple échantillon sur la meilleure approche car vous avez mentionné la fuite de mémoire, etc.
salutations
gorick
Oui, merci pour ça. C'est vraiment bien présenté et c'est ce que j'attendais. Cependant, je semble avoir des problèmes avec les chaînes de caractères.
J'ai créé un exemple de ce document en C, par exemple ci-dessous, pour accepter une valeur de chaîne en entrée et l'écrire dans un fichier :
J'écris les valeurs dans un fichier pour les vérifier.Le MQL est le suivant :
La sortie du fichier est la suivante :Voici les valeurs des chaînes de caractères : R foooooooooooooooo1
Il ne renvoie que le "R" ou le premier caractère de la chaîne passée ? Le "foooooooooooo1" a été inséré juste pour vérifier que j'imprime correctement.
Quelqu'un a-t-il une idée de ce que je fais mal ?
Oui, merci pour ça. C'est vraiment bien présenté et c'est ce que j'attendais. Cependant, il semble que j'aie des problèmes avec les chaînes de caractères.
J'ai créé un échantillon de ce document en C, par exemple ci-dessous, pour accepter une valeur de chaîne en entrée et l'écrire dans un fichier :
<removed>
Quelqu'un a-t-il une idée de ce que je fais mal ?
Le problème se situe dans votre code C, pas dans MQL4.
%s dans printf() signifie "chaîne Ansi". Vous devez utiliser %ls
Oui, merci pour ça. C'est vraiment bien présenté et c'est ce que j'attendais. Cependant, il semble que j'aie des problèmes avec les chaînes de caractères.
J'ai créé un exemple de ce document en C, par exemple ci-dessous, pour accepter une valeur de chaîne en entrée et l'écrire dans un fichier :
J'écris les valeurs dans un fichier pour les vérifier.Le MQL est le suivant :
La sortie du fichier est la suivante :Voici les valeurs des chaînes de caractères : R foooooooooooooooo1
Il ne renvoie que le "R" ou le premier caractère de la chaîne passée ? Le "foooooooooooo1" a été inséré juste pour vérifier que j'imprime correctement.
Quelqu'un a-t-il une idée de ce que je fais mal ?
Bonjour,
Veuillez utiliser le bouton SRC lorsque vous postez du code. Merci.
Cette fois, je l'ai édité pour vous.
Bonjour,
Veuillez utiliser le bouton SRC lorsque vous publiez un code. Merci.
Cette fois, je l'ai édité pour vous.
Désolé les gars, c'est la première fois que je poste ici.
Merci pour votre contribution, je vous en suis vraiment reconnaissant.
Ce que cela implique, c'est que tous les échantillons existants ne sont pas exacts. Il faut utiliser l'unicode. Comme je suis très novice en matière de programmation de DLL, j'ai commencé à partir de zéro tout récemment, et je me suis donc fortement appuyé sur les exemples fournis. De plus, il se trouve que j'ai commencé à utiliser la version 600 au même moment.
Si vous faites cela depuis longtemps, j'imagine que vous êtes parfaitement au courant de la situation. Ce n'est malheureusement pas le cas, je ne reçois que des bribes d'informations et de conseils sur ce forum.
Je m'excuse de mon ignorance.
Salutations et remerciements
Si quelqu'un a des suggestions sur ce qu'il faut faire de mieux, faites-le moi savoir.
Je vous remercie encore.
Si quelqu'un a des suggestions sur ce qu'il faut faire de mieux, faites-le moi savoir.
Je vous remercie encore.