Discussion sur "Comment écrire une DLL pour MQL5 et échanger des données en 10 minutes". - page 6
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
Utiliserwchar_t au lieu de char
Le problème réside dans le mql lui-même.
Quel genre de code est-ce ? Copier un pointeur revient à copier 4 octets de mémoire contenant l'adresse.
Dans ce cas, memcpy peut vous aider, si vous vous occupez au préalable de l'allocation du tampon nécessaire dans la ligne de réception (dans le programme MQL5).
Quel genre de code est-ce ? Copier un pointeur revient à copier 4 octets de mémoire contenant l'adresse.
Dans ce cas, memcpy peut vous aider, si vous prenez soin d'allouer le tampon nécessaire dans la ligne de réception (dans le programme MQL5).
Qu'est-ce que le pointeur a à voir avec ça ? Ce code fonctionne parfaitement dans mql4. Pas après la migration vers mql5.
Tout le monde ici donne des conseils, mais j'aimerais que l'on montre un très bon exemple de la façon de passer la chaîne de mql5 à la fonction dll.
...
Question
Quel est le problème ? Comment passer humainement une chaîne de caractères de MQL à une dll ?
1) Merci pour votre message. L'erreur a été corrigée. Veuillez attendre une mise à jour.
2) On vous a correctement parlé de wchar _t - les chaînes de caractères dans MQL5 sont Unicode.
3) Que voulez-vous dire par "lors de la vérification en débogage visuel" ?
4) C'est la façon correcte de l'utiliser :
Merci d'aider les programmeurs en difficulté comme moi. :) Votre exemple a apporté un peu de clarté à ma situation.
J'ai décidé d'écrire (ou huitième, qui peut en avoir besoin) fonction pour convertir la chaîne de wchar_t à bon vieux char. Cette fonction peut être utile à ceux dont les projets comportent beaucoup de code utilisant le type char. Et comme MQL5 ne transmet que des wchar_t, il est plus facile de convertir à l'entrée que de réécrire la moitié du code de la dll.
Merci d'aider les programmeurs en difficulté comme moi. :) Votre exemple a apporté un peu de clarté à ma situation.
J'ai décidé d'écrire (ou huitième, qui peut en avoir besoin) fonction pour convertir la chaîne de wchar_t à bon vieux char. Cette fonction peut être utile à ceux dont les projets comportent beaucoup de code utilisant le type char. Et comme MQL5 ne transmet que des wchar_t, il est plus facile de convertir à l'entrée que de réécrire la moitié du code de la dll.
Les fonctions DLL qui acceptent les chaînes de caractères en tant que char *, bien sûr, prennent un pointeur vers le premier élément du tableau de type char. Cela signifie que lorsque nous décrivons l'importation de telles fonctions dans un programme MQL5, nous devons utiliser le tableau de chars comme paramètre de chaîne.
Pour ces cas, nous avons fourni la fonction StringToCharArray qui convertit correctement les chaînes de caractères dans l'alphabet national. La fonction wcstombs ne le fait pas toujours correctement.
L'article est intéressant et utile.
1) Le fait que le code source soit inclus est cool. Heh, mais où est la DLL compilée ? Évidemment, ce n'est pas un problème pour un Megaproger de la créer.
Mais que faire si je ne suis pas un Mega et pas un Proger ? ! :)
2) L'article utilise le compilateur MS. Je ne suis pas ami avec elle :) J'ai BC++. Puis-je poster le code source qui lui a été accordé ?
(Selon moi, il est probablement toujours préférable d'afficher les sources pour MS et BC, ce sont deux entreprises de premier plan, mais leurs styles d'écriture sont différents).
Nous essayons de ne pas publier de code potentiellement dangereux (DLL) afin de ne pas rendre les utilisateurs nerveux. De plus, ce n'est qu'un exemple de test.
Malheureusement, je n'ai pas le compilateur Borland C++ sous la main. Essayez de l'adapter vous-même, il s'agit de moins d'une page de code.
yu-sha:
Les développeurs ne visent-ils pas trop haut ?
Et pourquoi réinventer la roue quand tout a déjà été fait il y a longtemps (C, Delphi, ...) ?
Il ne faut pas faire ce qui semble juste, mais ce qui est bénéfique. Parce que le profit est ce qui est juste. Et dans ce cas (MT5+MQL5+services) - un bénéfice énorme (qui sera remboursé des dizaines ou des centaines de fois) pour MetaQuotes et un bénéfice énorme pour les traders. Mais pas tout de suite.
C'est toujours une bonne idée de voir large et de se projeter dans l'avenir pour au moins 5 ans. C'est ce qu'a fait MetaQuotes.