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
Je me demande s'il est possible d'obtenir un vrai pointeur sur une fonction. Les pointeurs obtenus à l'aide de typedef fonctionnent parfaitement dans le programme mql. Mais malheureusement, je n'ai pas réussi à les passer dans la dll.
Si vous connaissez le C++ + l'assembleur intégré et que vous savez quoi et comment mettre dans la pile, et que les termes far et near call sont clairs, vous pouvez essayer. Je ne peux pas garantir que cela fonctionnera, mais c'est possible.
Où est l'erreur ?
Votre exemple dans le code est tout à fait différent. J'essaie d'obtenir la valeur de l'adresse.
Il y a un exemple dans l'article.
Votre exemple dans le code est tout à fait différent. J'essaie d'obtenir la valeur de l'adresse.
Il y a un exemple dans l'article.
J'ai mis en évidence les endroits où l'adresse est écrite. Cependant, cet exemple de l'article provoque également un plantage.J'ai immédiatement compris ce que vous vouliez. Je suis certain que l'adresse renvoyée par les fonctions WinAPI ne peut pas être utilisée dans MQL5. Mais l'adresse est correctement transmise aux arguments.
Vous pouvez en être absolument sûr en écrivant une simple DLL qui affiche l'adresse reçue dans l'argument et la renvoie. Comparez ensuite le résultat avec MQL5. Beaucoup de gens ici pratiquent le C.
Où est l'erreur ?
Corrigée la vôtre :
Vous devez avoir une longueur de 4 ou moins partout.
Copier plus de 2GB fonctionne
Obtenir l'adresse de départ d'un tableau :
Votre exemple dans le code est tout à fait différent. J'essaie d'obtenir la valeur de l'adresse.
Il y a un exemple dans l'article.
J'ai mis en évidence les endroits où l'adresse est écrite. Cependant, cet exemple de l'article provoque également un plantage.Bien sûr... les prototypes sont de 4 (adresse 32 bits comme unsigned int), et vous les compilez/exécutez en 5 (il y en a 64).
Vous ne pouvez faire confiance à personne si vous utilisez WinAPI - écrivez les prototypes vous-même. Ou mieux, écrivez votre propre DLL, laissez-la tirer winapi, et en haut dans mql donne des interfaces de plus haut niveau.
La copie de plus de 2 Go fonctionne
Obtenir l'adresse initiale du tableau :
J'ai raté le coche avec l'adresse 64bit. Mais je me plante toujours avec l'adresse corrigée. Est-ce que c'est sûr que ça devrait marcher ? Puis-je voir un exemple complet du code corrigé de fxsaber ?
Jusqu'à présent, je suis toujours d'avis que l'adresse de WinAPI est incompatible avec MQL.
Corrigez le vôtre :
bien sûr que oui...les prototypes sont de 4 (adresse 32 bits à la unsigned int) et compilent/exécutent en 5 (il y en a 64).
Merci, cela fonctionne maintenant.
Le dernier paramètre (qui est cnt) est également de 64 bits. Il s'agit de size_t
https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/memcpy-wmemcpy