Erreurs, bugs, questions - page 2590
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
@Ilyas
Depuis la dll, le pointeur vers la chaîne de caractères const wchar_t* copie une chaîne de caractères paire, avec les paramètres suivants
wcsncpy( out, data, wcslen(data) * 2 );
Avec ces paramètres, bien sûr, il y a des fuites.
Mais la chaîne de caractères s'avère être égale, pas un seul caractère supplémentaire ne s'y glisse.
Et après avoir terminé le programme, le journal du conseiller-expert affiche un message
Et il existe un tel test.
Il présente les éléments suivants
Le caractère ' ' renvoie deux octets au lieu d'un. Probablement parce que c'est en Unicode.
Et la chaîne de caractères renvoie douze octets chacun au lieu de deux octets par rapport à wchar_t.
Comme moyen possible, peut-être que l'alignement de type supérieur déforme la taille de la corde quelque part ?
@Ilyas
A partir de la dll, le pointeur vers la chaîne const wchar_t* copie une chaîne paire, avec ces paramètres
Avec ces paramètres, bien sûr, il y a des fuites.
Mais la chaîne de caractères est égale, pas un seul caractère supplémentaire ne s'y glisse.
Et après avoir terminé le programme, le journal du conseiller-expert affiche un message
Et il existe un tel test.
Il présente les éléments suivants
Le caractère ' ' renvoie deux octets au lieu d'un. Probablement parce que c'est en Unicode.
Et la chaîne de caractères renvoie douze octets chacun au lieu de deux octets par rapport à wchar_t.
Comme moyen possible, peut-être que l'alignement de type supérieur déforme la taille de la corde quelque part ?
@Ilyas
Dans le DLL, le pointeur const wchar_t* string copie une chaîne de caractères simple, avec les paramètres suivants
Avec ces paramètres, bien sûr, il y a des fuites.
Mais la chaîne s'avère être une chaîne paire, sans aucun caractère supplémentaire manquant.
Et après avoir terminé le programme, le journal du conseiller-expert affiche un message
Et il existe un tel test.
Il présente les éléments suivants
Le caractère ' ' renvoie deux octets au lieu d'un. Probablement parce que c'est en Unicode.
Et la chaîne de caractères renvoie douze octets chacun au lieu de deux octets par rapport à wchar_t.
Comme moyen possible, peut-être que l'alignement de type supérieur déforme la taille de la corde quelque part ?
1. dans MQL seulement Unicode, c'est pourquoi la taille du caractère est de 2 octets
2. La chaîne est une structure (4 octets de tampon et 8 octets de pointeur).
La copie de la chaîne doit être
Si cela ne fonctionne pas, l'erreur doit être trouvée ailleurs.
Bonjour à tous ! Il semble que la fonction ResourceReadImage() ne fonctionne pas correctement lors de la récupération de données à partir de fichiers BMP ! J'ai fait un script pour dessiner une image comme fond sur la toile. Si nous prenons les pixels d'une image à partir d'un fichier situé sur le disque dur et que nous la remplissons simplement sur le canevas, tout fonctionne bien, mais si nous prenons les pixels d'une image à partir d'une ressource BMP qui se trouve dans le fichier ex5 lui-même en utilisant la fonction ResourceReadImage(), l'image de fond résultante ressemblera à une tranche minuscule et fortement agrandie de l'image source. Quelle en est la raison ?
Le cycle de point de copie est erroné, remplacez-le par
Et cette question - comment obtenir une liste de variables d'entrée, la même que celle de la fonctionFrameInputs() , mais en un seul passage, sans optimisation ?
Oui, une telle question a été soulevée récemment, je l'ai manquée d'une manière ou d'une autre, et maintenant j'ai moi-même une tâche de ce type (je veux créer des fichiers set automatiquement).
Dans quelle direction creuser ? Et si quelqu'un se souvient de cette discussion, où se trouve-t-elle (je ne la trouve pas) ?
Bien sûr, dans chaque conseiller expert, je pourrais écrire une fonction qui créerait une telle liste, mais il serait préférable d'avoir une fonction de bibliothèque universelle.Vous pourriez, bien sûr, écrire une fonction unique dans chaque EA qui créerait une telle liste, mais une fonction de bibliothèque universelle serait préférable.
Jetez un coup d'œil ici.
Jetez un coup d'œil ici.
C'est ça, c'est ça !
Merci beaucoup.
1. dans MQL seulement Unicode, c'est pourquoi la taille du caractère est de 2 octets
2. La chaîne est une structure (4 octets de tampon et 8 octets de pointeur).
La copie de la chaîne doit être
Si cela ne fonctionne pas, l'erreur doit être trouvée ailleurs.
Et que se passe-t-il si la taille de la chaîne à copier est supérieure ou inférieure à la taille du tampon alloué ?
Que se passe-t-il si la chaîne copiée est plus grande ou plus petite que la taille du tampon alloué ?
Si c'est plus petit, c'est OK, en général le tampon de la chaîne est toujours légèrement plus grand que la chaîne elle-même (mais ce n'est pas un fait !).
Mais si vous écrivez plus que cela, il est presque garanti que le terminal se plantera.
Et le crash ne se produira probablement pas immédiatement, mais seulement lors de la prochaine utilisation de la mémoire dynamique (réaffectation des tableaux ou des tampons de chaînes de caractères) ou lors de l'arrêt, lorsque la mémoire du programme MQL utilisée est rendue au système.