comment décharger la dll - page 7

 

AlexEro,

Je suis de retour de vacances, je vois que tu as les bâtards sur le dos. Tuons-les ensemble. )))))

Faites votre choix,

Le problème du chargement de la dll après la suppression de l'indicateur existe en effet, mais ce n'est pas à cause de la présence ou de l'absence d'erreurs dans le code de la dll elle-même, mais parce que les développeurs ont limité l'utilisation des bibliothèques externes par ce qu'on appelle des "limites raisonnables".

Je ne sais pas quelles sont ces limites, ils n'ont pas pris la peine de les expliquer en détail. Toutefois, tant que la bibliothèque se situe dans ces limites, les téléchargements sont possibles.

Mais dès qu'un programmeur dérangé commence à manipuler la mémoire avec un zèle excessif, à voler du temps processeur au terminal pour ses calculs ou à toucher à la file d'attente sacrée (oh là là) des messages de terminal.exe, le méchant methaquot se venge.

La Dll qui n'est pas déchargée n'est pas nouvelle. J'ai rencontré des choses qui me font friser les cheveux. Par exemple, certains indicateurs (qui ne contenaient pas d'appels de DLL, remarquez bien) ont commencé à grimper dans l'espace d'adressage de l'autre. Et même après l'appel d'une simple fonction de la DLL (même en ne faisant rien du tout - je l'ai essayé spécifiquement !) le terminal a soudainement sauté( !) des lignes du programme MQL. La boucle sur la série temporelle for(i=limit;i>=0;i--) après l'avoir terminée s'est envolée vers la zone des indices négatifs (ce qui a été inévitablement confirmé par des alertes) !!! Ce qui m'a le plus étonné, c'est que terminal.exe, après avoir reconnu le caractère comique de la situation au bout d'un certain nombre de millisecondes et s'être immédiatement chié dessus, a immédiatement cessé de cliqueter et a ramené i à sa valeur initiale de 0. Comme si rien ne s'était passé.

Voyons ce que fait l'utilitaire regsvr après avoir corrigé les erreurs de manipulation du code des programmes Ex4.

 
HideYourRichess >> :

Encore une fois - je n'ai aucun problème avec dll où que ce soit. Si vous avez des problèmes, ce sont vos problèmes de programmation, ni MS ni MT ne sont à blâmer. Et le fait que vous deviez utiliser un "ancien" VC - cela devrait donc être clair.

Drôle d'homme.

Tout est résolu par les tests.

.

Alors prenez la dll, retirez-la de l'EA - si elle peut être retirée.

avec MT running, c'est ça, tu es un héros, félicitations !

Et si ça échoue, pourquoi écrivez-vous cela ici ? Pour qui ?

Pour que les clients voient quel genre de traitement ils recevront en travaillant avec vos produits ?

Ou pour que chacun sache exactement à qui ne pas demander conseil ?

.

Je me demande maintenant quel genre de réponse voudraient les personnes qui ont posé la question.

le plus probable est le suivant : créer un exe, charger une dll avec une liaison dynamique dans celui-ci.

via GetProcAddress() et de tirer les appels.

Si lorsque l'Exe s'exécute, il ne supprime pas la Dll après le déchargement, vous avez un problème.

Cela s'appelle obtenir un résultat objectif réel au lieu d'inventer...

des "erreurs" de "votre programmation".

Et à ce résultat obtenu, vous pouvez apporter une théorie :-)....

.

Les théories, je m'en repens, ont toutes été inventées ici.

Mais c'est parce que tu es trop paresseux pour lever le % pour répondre correctement.

.

Et VBAG... eh bien... Bravo !

Une description sensée du problème, une étude de cas spécifique, tout est devenu très clair.

Mais pour vous, si vous travaillez avec un serveur d'application, le remplacement des dll ne sera bientôt plus aussi pertinent :-).

.

Franchement, pour le débogage, il est préférable d'avoir des données *statiques* dans un fichier.

Demandez à un EA de transférer les données dans un fichier pour vous.

Au cours des sept dernières années, j'ai lu et écrit des fichiers de plusieurs mégaoctets en une seule ligne - tout est très rapide.

Et pour un fichier séparé par des tabulations, vous pouvez convertir cette grande chaîne en une matrice en une seule fois et sans substr().

(en dixièmes de seconde), parce que la division en chaînes puis en colonnes fonctionne trop bien.

trop lent (il s'agissait de quelques secondes). Ainsi, si quelque chose se plante, le problème peut être *garanti*.

se reproduisent, plutôt que de dépendre de générateurs de nombres aléatoires.

.

Et avec cette approche ( !), les tests seraient simplifiés. Parce que ce n'est pas une Dll.

Parce que le bouton d'exécution dans ONE CLICK va compiler, slinker, exécuter, et l'exe lui-même va prendre les données nécessaires.

.

P.S. : les problèmes de "programmation" peuvent être résolus...

 

Je suis d'accord avec les camarades précédents que ma DLL doit être utilisée dans MT4 avec précaution et limitation. Cela signifie les points mentionnés ci-dessus, ainsi que le fait que vous devez développer votre DLL progressivement, et pas d'exotiques. Votre DLL est un invité temporaire dans la maison de quelqu'un d'autre de semi-interprète dans MQL4.

2 alsu : je suis malade, je n'ai rien à faire, je ne peux pas mener un projet intelligent au lit, mais une conversation avec des nerds ne demandait pas beaucoup d'effort mental, alors je l'ai griffonnée. j'attends que leur conscience se réveille, mais elle n'est pas encore visible, seulement de la démagogie et du verbiage ....

 
alsu >> :

Le problème du déchargement des DLL après la suppression de l'indicateur existe réellement, mais il n'est pas lié à la présence ou à l'absence d'erreurs dans le code DLL lui-même, mais au fait que les développeurs ont limité l'utilisation des bibliothèques externes par ce qu'on appelle des "limites raisonnables".

alsu >> :

Néanmoins, tant que la bibliothèque reste dans ces limites, les téléchargements se déroulent sans problème.

Mais dès qu'un programmeur dérangé commence à manipuler la mémoire avec un zèle excessif, à voler du temps processeur au terminal pour ses calculs ou à toucher à la file d'attente sacrée (oh là là) des messages de terminal.exe, le méchant methaquot se venge.

La Dll qui n'est pas déchargée n'est pas nouvelle. J'ai rencontré des choses qui me font friser les cheveux. Par exemple, certains indicateurs (qui ne contenaient pas d'appels de DLL, remarquez bien) ont commencé à grimper dans l'espace d'adressage de l'autre. Et même après un appel d'une fonction simple à partir d'une DLL (même en ne faisant rien du tout - je l'ai essayé spécifiquement !) le terminal a soudainement sauté( !) des lignes de programme MQL. La boucle sur la série temporelle for(i=limit;i>=0;i--) après l'avoir terminée s'est envolée vers la zone des indices négatifs (ce qui a été inévitablement confirmé par des alertes) !!! Ce qui m'a le plus étonné, c'est que terminal.exe, après avoir reconnu le caractère comique de la situation au bout d'un certain nombre de millisecondes et s'être immédiatement chié dessus, a immédiatement cessé de cliqueter et a ramené i à sa valeur initiale de 0. Comme si rien ne s'était passé.

Voyons ce que fait l'utilitaire regsvr après avoir corrigé les erreurs de traitement du code eX4.

Comme on dit, on peut se casser la bite si on est stupide. En d'autres termes, si vous ne pouvez pas écrire des programmes normaux et exploitables en MQL - c'est votre problème, pas MQL, c'est tout. Vous pouvez écrire une dll boguée en C, mais cela n'annule pas le fait que le C est un excellent langage. Et là aussi, un mauvais danseur, c'est-à-dire vous, se met en travers de la route des bolls. Je comprends votre désir de blâmer MT ou MS pour vos erreurs. Si elle ne disparaît pas avec l'âge, vous ne pouvez rien y faire.

 
HideYourRichess >> :

Ici, comme on dit, tu peux bêtement casser ta bite. En d'autres termes, si vous ne pouvez pas écrire des programmes exploitables décents en MQL - c'est votre problème, pas MQL, c'est tout. Vous pouvez écrire une dll boguée en C, mais cela n'annule pas le fait que le C est un excellent langage. Et là aussi, un mauvais danseur, c'est-à-dire vous, se met en travers de la route des bolls. Je comprends votre désir de blâmer MT ou MS pour vos erreurs. Si cela ne disparaît pas avec l'âge - alors rien ne vous aidera plus.

À en juger par votre avatar, à votre âge, il n'y a rien à casser et rien à gêner.

Avez-vous vu mes dlls ? Pourquoi diable les appeler des mauvais mots ? Je n'ai jamais écrit de glitches - je n'ai pas le temps pour cela. Le problème dans ce cas a été écrit avec des méta-citations (je ne prétends pas à la SEP, soit dit en passant). Si vous ne mettez jamais rien de plus complexe que 2 +2 dans une dll, cela ne signifie pas que les autres ne le font pas. 2 +2 n'auront pas de problème.

 
jartmailru >> :

Drôle d'homme.

Tout est résolu par les tests.


Je l'ai testé - il fonctionne bien pour moi.


jartmailru >> :

Alors prenez la dll, retirez-la de l'EA - si elle peut être retirée.

avec MT running, c'est ça, tu es un héros, félicitations !

Et si ça échoue, pourquoi écrivez-vous cela ici ? Pour qui ?

Pour que les clients puissent voir comment ils seront traités lorsqu'ils travailleront avec vos produits ?

Ou pour que chacun sache exactement à qui il ne doit pas demander conseil ?


Que voulez-vous dire par "peut être enlevé" ? Mes dlls dans l'EA se comportent correctement. Je dois faire quelque chose de complètement faux.

 
HideYourRichess >> :

>> c'est votre problème, pas celui de MQL.

Si l'interpréteur n'est pas défaillant, il ne sautera pas de commandes dans le code, même si tu chies dans ton froc ici !

 
HideYourRichess >> :

Que voulez-vous dire par "peut être retiré" ? Mes dlls dans l'EA se comportent correctement. Je dois faire quelque chose de complètement faux.

Ce que je veux dire, c'est que vous devez spécifier une dll spécifique dans l'EA.

Ensuite, vous devez exécuter le conseiller expert et ne pas quitter le Metatrader.

Ensuite, le cas d'utilisation le plus important est de prétendre que nous remplaçons la dll par une nouvelle.

S'il échoue lorsque le metatrader est en cours d'exécution (et je vérifie en supprimant le fichier), alors

alors le système pense que la dll est utilisée...

voilà. Votre Expert Advisor est terminé et la dll n'a pas été supprimée.

Maintenant, vous devez redémarrer toute l'application pour remplacer la Dll.

 
AlexEro >> :

Je suis malade.

H1N1 ;)

>> ils ont dit qu'ils avaient reçu le préfixe.

 
alsu >> :

À en juger par votre avatar, à votre âge, il n'y a rien à casser et rien à gêner.

Avez-vous vu mes dlls ? Pourquoi diable les appeler des mauvais mots ? Je n'ai jamais écrit de glitches - je n'ai pas le temps pour cela. Le problème dans ce cas a été écrit avec des méta-citations (je ne prétends pas à la SEP, soit dit en passant). Si vous ne mettez jamais rien de plus complexe que 2 +2 dans une dll, cela ne signifie pas que les autres ne le font pas. 2 +2 n'auront pas de problème.


Oooooh, muyuye s'est abaissé à essayer de se moquer de l'avatar. L'étape suivante consiste à essayer de se moquer du surnom.


De quoi parlais-tu dans ton précédent discours ? Quelles horreurs as-tu racontées à un public ébahi ? En le regardant, je suis vraiment perplexe. Il faudrait travailler très dur pour l'obtenir. D'où les mauvais mots pour vos dlls. Mais si ces horreurs que vous avez décrites ne concernent pas les dlls, pourquoi en parler ?


Au fait, que signifie 2+2 ? C'est une mesure de la difficulté ? Essayez d'implémenter quelque chose comme 2+2 par vous-même comme dans Excel et vous serez surpris de la difficulté que cela représente.