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 ne suis pas un méga-programmeur. Mais je ne comprends pas où est l'universalité ? uchar ne peut pas être universel parce qu'il limite l'utilisateur, à savoir : uchar ne peut contenir que des valeurs positives. La valeur minimale est zéro, la valeur maximale est 255.
Toute donnée dépassant la valeur de uchar devient égale à la valeur maximale ou minimale de uchar.
D'après ce que j'ai dit, j'ai demandé dès le début "comment passer un int ou un double". Je ne vous suis pas, chef.
OK, faisons un petit tour.
1) Prenons l'exemple de char et uchar. Les deux variables ont une taille de 1 octet.
Cela signifie qu'en les assignant l'une à l'autre, nous ne perdons pas d'octets et donc nous ne perdons pas la valeur des données d'origine.
Regardez ces expressions
Il en va de même pour long/ulong, int/uint.
En d'autres termes, les variables de type entier de même taille en octets peuvent être transmises l'une à l'autre sans perdre d'octets d'information.
Par ailleurs, cela signifie que même si le Conseiller Expert accepte les nombres MAGIC de type ulong, vous pouvez toujours les définir et les lire en format long, c'est-à-dire en format signé, dans vos programmes.
2. Examinez maintenant les types <some_type> et uchar.
Par exemple, int. Comme vous le savez grâce à sizeof(int), il a une taille de 4 octets, ce qui signifie que ces 4 octets en mémoire peuvent être facilement représentés par un tableau uchar[4]
. S'il y a un double (il fait 8 octets), il peut être représenté par un tableau uchar[8]
. Cela s'applique également aux octets des chaînes de caractères - en MQL, il s'agit d'un tableau ushort.
. Par conséquent, si vous avez une structure de n'importe quel type, vous pouvez facilement fournir des données sous la forme d'un tableau uchar.
Ce sont ces concepts de base sur les octets qui sont utilisés dans la version MQL5 - fichiers virtuels en mémoire CFastFile. Il stocke n'importe quelle donnée dans la mémoire uchar array.
C'est-à-dire si vous n'avez pas besoin d'échanger des données avec des programmes externes. Ou si vous recevez des données d'un autre programme sous la forme d'un flux de données - par exemple, en lisant des pages Internet, et que ces données n'ont pas besoin d'être sauvegardées sur un disque, il est préférable d'utiliser CFastFile au lieu du mappage Windows.
et enfin, de consolider entièrement https://www.mql5.com/fr/articles/364.
MT5 642 Win7 64 ne fonctionne pas, d'après ce que j'ai compris, après que
hmem=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,size+HEAD_MEM,path) ; // créer un objet mémoire
J'obtiens l'erreur 1400,
mais Vista 32 fonctionne.
C'est dû à la différence de taille des pointeurs entre les systèmes 32 et 64.
ce fichier de bibliothèque est conçu pour un terminal 32 bits.
mais si vous utilisez un terminal 64 bits, vous devez mettre un type long de 8 octets à tous les endroits où un pointeur est impliqué (par exemple PBYTE, LPVOID, etc., et dans tous les types memcpy).
mais comment me connecter
Il s'éteint
et ces deux inludes fonctionnent l'un sans l'autre.
mais comment me connecter
Il donne
et ces deux inclusions fonctionnent l'une sans l'autre.
essayez d'utiliser la résolution contextuelle : :
Merci
Je n'ai eu qu'à modifier la bibliothèque standard.
Je ne pense pas que ce soit une bonne chose....Je vous remercie.
Je n'ai eu qu'à modifier la bibliothèque standard.
Je ne pense pas que ce soit une bonne chose.Vous ne comprenez pas.
Je vous ai parlé de kernel32::GetLastError, regardez comment il est implémenté dans mon code.
Si vous n'êtes pas satisfait de cette option, déclarez l'importation de kernel32 GetLastError par exemple avec un paramètre int. Il n'y aura pas de différence lors de l'appel, mais vous éviterez les conflits.
vous ne comprenez pas.
Je vous ai parlé de kernel32::GetLastError, regardez comment il est implémenté dans mon code.
Si cette option ne vous convient pas, déclarez l'importation de kernel32 GetLastError par exemple avec un paramètre int. Il n'y aura pas de différence lors de l'appel, mais vous éviterez les conflits.
Peut-être que je ne l'ai pas expliqué correctement.
mais nous devons
En effet, voici un exemple de votre code avec la bibliothèque standard attachée.
Lors de la compilation, il donne les mêmes erreurs.
olyakish, relisez attentivement ce que je vous ai écrit.
Si vous n'êtes pas satisfait du contexte, je vous dis exactement ce que je veux dire.
vous ne comprenez pas.
Je vous ai parlé de kernel32::GetLastError, regardez comment il est implémenté dans mon code.
Si cette option ne vous convient pas, déclarez l'importation de kernel32 ::GetLastError par exemple avec un paramètre int. Il n'y aura pas de différence lors de l'appel, mais vous éviterez les conflits.
Lorsque vous appelez kernel32::GetLastError avec son contexte dans le code , le compilateur appellera GetLastError sans contexte.
Les programmeurs doivent simplement prendre pour règle d'appeler les analogues MQL des fonctions WinAPI standard avec le contexte. Il n'y aura alors aucun problème lors de modifications ultérieures.
Ainsi, vous corrigez la bible standard et elle sera mise à jour, ce qui vous obligera à la modifier à nouveau.
Ainsi, vous fixez la bible standard et elle sera mise à jour, mais vous devez à nouveau l'éditer.