Sur la question de long - vous pouvez, mais ce n'est pas nécessaire du tout, si vous utilisez int comme un récepteur de 4 octets de quelque chose comme ça à partir d'un tableau de caractères. (c'est-à-dire que vous passez exactement par le pointeur &).
Comment le savoir - ici vous pouvez http://forum.ixbt.com/topic.cgi?id=26:37968
Sur la question de long - vous pouvez, mais ce n'est pas nécessaire du tout, si vous utilisez int comme un récepteur de 4 octets de quelque chose comme ça à partir d'un tableau de caractères. (c'est-à-dire que vous passez exactement par le pointeur &).
Pour le savoir, vous pouvez consulter le site http://forum.ixbt.com/topic.cgi?id=26:37968.
Pouvez-vous apporter des précisions sur l'heure d'échange dans cette structure (par exemple, pour 10 nombres au format Int) ?
clarifier la question.
Je pense qu'il s'agit d'une question créative liée davantage au travail d'une bibliothèque éolienne qu'à mql.
Bonjour. Bien que l'article ait été écrit il y a relativement longtemps, la question de l'échange de données avec des dll de bibliothèque est toujours d'actualité. J'ai moi-même été confronté récemment à la nécessité d'implémenter une certaine fonctionnalité et j'avais le choix entre écrire ma propre dll ou continuer à essayer d'utiliser les dll de la bibliothèque. J'ai opté pour cette dernière solution et j'ai naturellement été confronté à la difficulté de transférer des structures et de récupérer des données. Après avoir lu cet article, je n'ai pas bien saisi certains points qui, à mon avis, sont très compliqués. Dans cet article, lors du transfert d'une structure vers un environnement externe, il est suggéré d'utiliser un tableau comme zone de mémoire allouée dans laquelle la fonction de la bibliothèque placera le résultat et que nous devons convertir pour la suite du travail. J'ai très peu d'expérience dans ce domaine et mon raisonnement semblera peut-être amateur, mais je vais tout de même exprimer mon opinion dans l'espoir que des personnes intelligentes me corrigeront. Prenons un exemple simple mentionné dans un vieil article https://www.mql5.com/fr/articles/1543.
Cet article traite de la question de la recherche de fichiers au moyen de dll de bibliothèque. Il suggère également de passer un pointeur à un tableau de la taille requise et d'extraire ensuite les données requises de ce tableau.
Qu'est-ce qu'une structure ? Il s'agit de la même section de mémoire. Essayons maintenant de changer l'approche du passage des structures et de l'extraction des données :
// Déclarer les définitions des types de données #define DWORD int #define TCHAR short // Définir ce type, car nous allons travailler avec l'unicode #define MAX_PATH (260) // Déclare la structure FILETIME struct FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime; }; // Déclare la structure de données des résultats de la recherche struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[MAX_PATH]; TCHAR cAlternateFileName[14]; }; // En déclarant des types de données, nous copions les structures WinAPI sans aucune modification. // Importation d'une fonction de la bibliothèque #import "kernel32.dll" int FindFirstFileW(string path, _WIN32_FIND_DATA& answer); #import //+------------------------------------------------------------------+ //| Fonction d'initialisation de l'expert| //+------------------------------------------------------------------+ int OnInit() { // Créer une variable avec le type de la structure précédemment créée _WIN32_FIND_DATA data; // Appeler la fonction de la bibliothèque, en passant un pointeur sur notre structure, et en fait sur la mémoire allouée. int handle = FindFirstFileW(TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Experts\\*.mq5", data); if(handle!=-1) { // Afficher le résultat de la recherche en accédant aux champs de notre structure sans conversion supplémentaire Print("Nom de fichier trouvé :", ShortArrayToString(data.cFileName)); Print("Nom du fichier temporairement trouvé : ", ShortArrayToString(data.cAlternateFileName)); Print("Taille du fichier trouvée : ", data.nFileSizeLow); } //--- return(INIT_SUCCEEDED); } //+-

- 2008.07.15
- MetaQuotes Software Corp.
- www.mql5.com
Qu'est-ce qu'une structure ? Il s'agit de la même section de mémoire. Essayons maintenant de changer l'approche du passage des structures et de l'extraction des données :
J'ai collé votre code correctement dans l'éditeur
J'ai collé votre code correctement dans l'éditeur
Merci beaucoup ! Je n'ai pas encore trouvé comment formater le code correctement ici. (((
Merci beaucoup ! Je n'ai pas encore trouvé comment coder correctement ici. (((
Comment insérer le code.

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Se débarrasser des DLL auto-produites a été publié :
Si la fonctionnalité du langage MQL5 n'est pas suffisante pour accomplir les tâches, un programmeur MQL5 doit utiliser des outils supplémentaires. Il doit passer à un autre langage de programmation et créer une DLL intermédiaire. MQL5 a la possibilité de présenter différents types de données et de les transférer vers l'API mais, malheureusement, MQL5 ne peut pas résoudre le problème concernant l'extraction de données à partir du pointeur accepté. Dans cet article, nous allons parsemer tous les « i » et montrer des mécanismes simples d'échange et de travail avec des types de données complexes.
Le diagramme 1 montre les tailles comparatives de certains types de données.
La fonction Memcpy est nécessaire pour copier les données d'une zone de mémoire à une autre.
La figure 2 montre la copie de quatre octets.
Dans MQL5, cela se présente comme suit.
Auteur : ---