Discussion sur "Comment écrire une DLL pour MQL5 et échanger des données en 10 minutes". - page 8

 
avoitenko:

Déclaration de la fonction DLL

Appel d' une fonction DLL

Exactement ! C'est exactement ce que j'ai fait. Merci !
 

Dans le dernier exemple, vous avez également apporté quelques modifications à la dll, n'est-ce pas ?

C'est ce que je veux dire.

bool ExcelSetTextCell(int X,int Y, uchar& Value[]);
 

Pourriez-vous me donner un indice également, si cela ne vous dérange pas trop. Il y a une dll, une valeur texte lui est passée, la sortie est un nombre de type chaîne.

Par exemple, comme ceci :

#import "n1.dll"
string fData (string a1);
#import

....

string znak = fData ("a");

// При значении "a" переменная znak будет равна например "172371", далее я значение znak конвертирую в int
// Так всё было в МТ4.

Je ne peux pas réparer la dll par manque de connaissances. Veuillez me conseiller sur la façon de créer un code correct pour le transmettre au Dll, et sur la façon de le recevoir correctement. J'ai le sentiment que ma dll ne fonctionnera pas dans MT5.

Merci d'avance pour votre aide.

Документация по MQL5: Основы языка / Типы данных / Тип string
Документация по MQL5: Основы языка / Типы данных / Тип string
  • www.mql5.com
Основы языка / Типы данных / Тип string - Документация по MQL5
 
Killa:

Pourriez-vous me donner un indice également, si cela ne vous dérange pas trop. Il y a une dll, une valeur texte lui est passée, la sortie est un nombre de type chaîne de caractères.

Je ne peux pas réparer la dll par manque de connaissances. Veuillez m'indiquer comment écrire correctement le code pour le soumettre à la dll, et comment l'obtenir correctement. Parce que ma dll ne fonctionne pas dans MT5 pour le moment.

Merci d'avance pour votre aide.

J'ai revérifié le travail avec le retour des chaînes de la DLL et j'ai trouvé une erreur en x64 (apparue après quelques optimisations). La correction sera incluse dans la prochaine version.

Si vous travaillez en x64, veuillez attendre la sortie de la build.

La seule chose que je peux ajouter, c'est de se rappeler que MQL5 fonctionne avec des chaînes de caractères Unicode.

 
Pour faire simple, vous devez réécrire la dll...
 
Je veux ressentir le pouvoir des dlls, ils en parlent beaucoup. La question est simple : par où commencer ? Que télécharger, que lire, quel forum fréquenter, 5-6 points s'il vous plaît. Beaucoup de choses dans cette vie dépendent de la pendule initiale.
 

Merci pour cet article. Je l'ai déjà utilisé.

Le conseil est très bon. Mais ! Il m'a fallu 10 minutes pour comprendre comment définir correctement le chemin de la DLL dans VS2010.

Ça s'est avéré être comme ça :

C:\Users\пп\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\MQL5\Libraries

Je suggère de copier le chemin depuis MetaEditor.

Ou spécifiez votre propre chemin dans l'environnement (je ne l'ai pas vérifié).

Et autre chose, comment gérer le multithreading ?

 

Merci pour cet article. Je l'ai répété intégralement, mais je tiens à dire quelques mots sur ce que j'ai rencontré lors de la mise en œuvre - ces petites choses en apparence m'ont presque rebuté. Ce que je voulais clarifier (en utilisant VS2010 + MT5 (32 bit) build 756 + Win 7 Maximum x64) :

  1. J'ai essayé de le connecter sur la plate-forme x64 et cela a échoué - la raison, si je comprends bien, était la dépendance implicite de la DLL créée à partir des bibliothèques standard de Windows, qui pour une raison quelconque a chargé la bibliothèque x86 - ce n'est pas un problème de MQL5, mais cela vaut quand même la peine d'en parler. Je me suis sorti de cette situation en installant MT5 32bit - cela se fait à l'aide de la ligne de commande "Installer le dossier"-mt5setup.exe /32. Il utilisera des DLL x86. Je recommande donc de n'utiliser que du x86, du moins au début.
  2. MT5 n'a pas pu trouver de DLL de plugin de quelque façon que ce soit. L'article dit de mettre la DLL dans le dossier Librairies du terminal, mais le terminal ne la voit toujours pas. La solution est la suivante : l'endroit où la DLL sera stockée n'a pas d'importance, tant que l'emplacement est spécifié dans les variables système. La manière de le faire aidera Google.

Sinon, ce n'est pas un mauvais article... Respect !

 

Sur MT5 64 bits, l'exemple ne fonctionne pas. Le terminal signale qu'il s'agit d'une DLL 32 bits et ne la connecte pas. Mais sous Win32 (comme dans cet exemple et dans tous les autres exemples - comme dans Delphi) - toutes les DLLs sont 32-bit. Comme dans le post précédent, je dois désinstaller la version 64 bits du terminal et installer la version 32 bits. J'ai également besoin de savoir comment le faire puisque la version 64 bits est installée de force. Il s'avère que MT5 64 bits est un terminal mort, je ne sais pas pourquoi il est sorti. Chers développeurs, si cela est possible, faites en sorte qu'il soit possible de connecter une DLL 32 bits à МТ5 64 bits.

Si cela est techniquement impossible ou difficile, écrivez les pièges que cette version ne fonctionnera pas avec les DLL 32 bits et les utilisateurs souffrent et ne peuvent pas comprendre ce qui ne va pas. Et écrire ouvertement que le dossier Libraries n'est pas dans les répertoires du terminal lui-même, et sait où, et sans expérience ne sera pas trouver, ne pas même essayer. A propos, dans cet endroit secret se trouvent tous les indicateurs et experts, donc en installant MT5 vous pouvez les oublier - si vous ne savez pas que tout ceci se trouve dans un dossier caché C:\Users\nAppData\Roaming... ...ou l'utilisateur pense qu'il installe un programme écrit normalement, ce qui est une tricherie.

 

Vous devez améliorer votre niveau technique.

Pour les programmes 64 bits, vous avez besoin de bibliothèques 64 bits et il est impossible de connecter des bibliothèques 32 bits de manière raisonnable. Pour installer la version 32 bits, le programme d'installation doit être exécuté avec le commutateur /32.

Je vais réécrire l'article et ajouter des fonctionnalités intéressantes qui ont été implémentées depuis longtemps dans MetaEditor et les plateformes MT4 et MT5. De nombreux développeurs ne sont pas au courant des nouvelles fonctionnalités.

Raison: