Erreurs, bugs, questions - page 2163

 
Комбинатор:

l'index du tableau est au mieux également réduit à une seule commande assembleur directe, donc la question reste posée

En langage géré, uniquement dans un tableau statique avec une indexation constante. C'est-à-dire si l'optimiseur est sûr à 100% qu'il n'est pas nécessaire de vérifier les limites et la disponibilité des tampons.

Si les conditions sont violées, le contrôle de la mémoire tampon et des limites apparaît.

Il s'agit d'une connaissance de base à avoir lors de la programmation.

 
Vladimir Pastushak:
Si une fonction surchargée possède un enumToString, il y a un problème lorsqu'on l'appelle pour un entier...

J'ai prêté attention à cette https://www.mql5.com/ru/forum/1111/page1297#comment_1382986.

Mais ils n'ont rien changé, donc ::EnumToString dans les modèles est inutile dans de nombreux cas.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2015.02.16
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

En continuant à explorer les projets et en tombant sur

#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"

resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1

Pourquoi avons-nous besoin de projets si nous sommes limités ?

Un projet est PROJECT !!!!! qui pourrait avoir 1000 images, sons, fichiers d'aide et nous devons tout mettre dans un seul dossier ?

Je ne suis pas un fan du désordre dans les annuaires, pour écrire beaucoup de qualité doit être en ordre non seulement dans votre tête, mais aussi partout ...



 
A100:

J'ai prêté attention à ce https://www.mql5.com/ru/forum/1111/page1297#comment_1382986

Mais rien n'a été changé, donc ::EnumToString dans les modèles est inutile dans de nombreux cas.

Salut de fxsaber :

// Для enum-ов
template <typename T>
string EnumToString2( T Value ) { return(EnumToString(Value)); }
 
// Для кастомных типов
template <typename T>
string EnumToString2( const T& ) { return(NULL); }
 
 
// Для стандартных типов
#define  ENUMTOSTRING(A) string EnumToString2( A ) { return(NULL); }
  ENUMTOSTRING(int)
  ENUMTOSTRING(string)
// .....
#undef  ENUMTOSTRING
 
#define EnumToString EnumToString2
 
template<typename T>
string ETS( T t ) { return ( typename( t ) == "int" ? "OK" : ::EnumToString( t ) ); }
enum ENUM {     ENUM__ };
 
void OnStart()
{
        ENUM i1 = ENUM__;       Print( ETS( i1 )); //нормально
        int  i2 = 0;            Print( ETS( i2 )); //"ошибка компиляции"
        string i3 = NULL;       Print( ETS( i3 )); //"ошибка компиляции"
}
 
Комбинатор:

Ainsi, prendre un élément par indice dans un tableau simple devrait être une opération très rapide, n'est-ce pas ?

Mais la non-récupération est encore plus rapide. J'ai remarqué que si j'utilise des nombres à virgule flottante au lieu d'entiers, mon programme fonctionne une fois et demie plus vite. Je me l'expliquais par le fait que mon coprocesseur FPU était le plus souvent inactif, utilisant surtout des entiers. Dans mon cas, vous pouvez aussi en tenir compte : SQRT est exécuté dans le FPU, l'ALU libère du temps, ils commencent à travailler en parallèle dans une large mesure.
 
Vladimir Pastushak:

En continuant à explorer les projets et en tombant sur

#resource "\\Experts\\[Project 2018]\\Expert Name\\Resources\\img\\open_buy.bmp"

resource name is too long '\Experts\[Project 2018]\Expert Name\Resources\img\open_buy.bmp' CPanel.mqh 6 1

Pourquoi avons-nous besoin de projets si nous sommes limités ?

Un projet est PROJECT !!!!! qui peut avoir 1000 images, sons, fichiers d'aide et nous devons tout mettre dans un seul dossier ?

Je ne suis pas un fan du désordre dans les annuaires, pour écrire beaucoup de qualité doit être en ordre non seulement dans votre tête, mais aussi partout ...

Corrige partiellement les objets qui sont inclus au moment de la compilation et qui n'entrent pas dans le code en tant qu'objets nommés.

Le problème est qu'à l'intérieur du fichier EX, il y a une limite physique de 64 caractères pour les ressources nommées.
 
Artyom Trishkin:

Bonjour de fxsaber :

Le code ci-dessus est basé sur un défaut du compilateur

void f(       int  ) { Print( 1 ); } //(1)
void f( const int& ) { Print( 2 ); } //(2)
void OnStart()
{
    int i = 0;
    f( i ); //нормально ???
}

Résultat : 1... et pourquoi pas 2 ?

Parce que le C++ signale une erreur lors de la compilation, parce que les deux fonctions conviennent manifestement et parce que l'ordre actuel dans MQL ne permet pas du tout d'appeler la fonction (2) explicitement

Si cette erreur est éliminée, le code donné sera en grande partie inopérant.

 

Erreur de compilation : erreur d'optimisation de l'arbre

class A {
public:
    void f() {}
};
typedef A* (*fn)();
#import "Test.ex5"
    fn g();
#import
void OnStart() { g()().f(); }
 
Renat Fatkhullin:
Nous corrigerons partiellement les objets qui sont inclus au moment de la compilation et qui n'entrent pas dans le code comme un objet nommé.

Le fait est qu'il existe une limitation physique de 64 caractères pour les ressources nommées dans le fichier EX.

Il y a très peu d'espace dans les descriptions de produits.

3600 caractères, c'est trop peu pour les programmes importants et sérieux.

Je pense que beaucoup de gens seront d'accord avec moi.

Pour décrire les programmes, il ne faut pas moins de 5000 à 10000 caractères. Ou au moins un onglet avec le nom des paramètres du programme.

Un modérateur peut toujours demander de retirer l'eau.

Maintenant que j'écris une description de programme, j'ai utilisé les 3600 caractères uniquement pour la description des paramètres et je n'ai même pas décrit la moitié des fonctionnalités...
 
Vladimir Pastushak:

Il y a très peu d'espace dans les descriptions de produits.

3600 caractères, c'est extrêmement court pour des programmes importants et sérieux.

Je pense que beaucoup de gens seront d'accord avec moi.

Il ne faut pas moins de 5000 à 10000 caractères pour décrire les programmes. Ou au moins un onglet avec le nom des paramètres du programme.

Un modérateur peut toujours demander de retirer l'eau.

En ce moment, je suis en train d'écrire une description du logiciel, et j'ai utilisé les 3600 caractères juste pour décrire les paramètres, mais je n'ai même pas décrit la moitié des fonctionnalités...

Vladimir, tu as déjà acheté quelque chose ? Combien de temps avez-vous passé à lire le manuel ?

Personne ne va lire un livre en plusieurs volumes, ni même regarder des vidéos de plus de 3 à 5 minutes.
La seule solution consiste à ajouter des conseils dans l'interface du programme, comme le font presque tous les autres. Quelque chose comme un tutoriel interactif. Et les instructions détaillées destinées aux utilisateurs avancés peuvent être placées dans un blog ou sur leur site. Ceux qui le veulent le trouveront et le téléchargeront.