Erreurs, bugs, questions - page 2242

 
A100:
La demande n'était qu'une seule : aider et non entraver. Si vous pensez que la discussion est inutile, n'y participez pas... Ce n'est pas à vous de décider (nécessaire/non nécessaire) - c'est le rôle de l'administration et des modérateurs.

Je suis d'accord, mais si vous n'aimez pas les conseils, alors vous n'avez tout simplement pas besoin d'y répondre, alors il n'y aura pas de questions... chacun écrit ici ce qu'il pense être approprié, j'ai jugé bon de donner des conseils, c'est-à-dire d'apporter une aide gratuite, au lieu de la gratitude, je lis les plaintes... bonne chance

 
Konstantin:

Je suis d'accord, mais si vous n'aimez pas les conseils, vous n'avez pas besoin d'y répondre.

C'est un bon conseil... merci pour ça... Je vais le prendre.
 

Comment cela ?

ArrayFree(SummArr);
ArrayResize(SummArr,57);
Print("SummArr_1=",SummArr[1]);
2018.07.26 02:09:04.566 Pred_Ocenka_02 (Si Splice,M1)   SummArr_1=1190264832

Pourquoi la valeur du tableau n'est-elle pas vide (zéro) ?

 
Aleksey Vyazmikin:

Comment cela ?

Pourquoi la valeur du tableau n'est-elle pas vide (zéro) ?

Que se passe-t-il s'il est d'abord dimensionné et ensuite effacé ?

 
Vitaly Muzichenko:

Que se passe-t-il s'il est d'abord dimensionné et ensuite effacé ?

Puis

2018.07.26 02:20:08.482 Pred_Ocenka_02 (Si Splice,M1)   array out of range in 'Pred_Ocenka_02.mq5' (76,27)
Il n'y a pas d'information sur la taille après l'effacement.
 
Si
ArrayFree(SummArr);

Supprimer, alors la valeur n'est pas non plus vide. Le tableau n'a pas été utilisé auparavant.

 

Quelques absurdités, voici le code coupé en général

int SummArr[];

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ArrayFree(SummArr);
   ArrayResize(SummArr,57);
   Print("SummArr_1=",SummArr[1]);
   Print("SummArr_30=",SummArr[30]);   
   Print("SummArr_57=",SummArr[56]);   
  }
//+------------------------------------------------------------------+

Sur la sortie.

2018.07.26 02:37:58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_1=1190264832
2018.07.26 02:37:58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_30=2097181
2018.07.26 02:37:58.693 Pred_Ocenka_error (Si Splice,M15)       SummArr_57=154252694

Vérifiez, peut-être que mon terminal est devenu fou.

Ou est-ce normal et tout devrait être à jeter ?

 

Le code dans l'indicateur mql4 a cessé de fonctionner. comment puis-je le réparer ?

else{// Иначе стрелка создана. Задаём её свойства
 ObjectSetInteger(Open_name,OBJPROP_ARROWCODE,OpenArrowCode);//код стрелки 232 
 ObjectSet(Open_name,OBJPROP_COLOR,ObjColor);//цвет стрелки
}

L'éditeur indique 'ObjectSetInteger' - aucune des surcharges ne peut être appliquée à l'appel de fonction.

Il a fonctionné pendant des années et s'est soudainement arrêté. C'est une honte, cependant.


 
Aleksey Vyazmikin:

Quelques absurdités, voici le code coupé en général

Sur la sortie.

Vérifiez, peut-être que mon terminal est devenu fou.

Ou peut-être que c'est normal et que tout devrait être poubelle ?

Libère le tampon de n'importe quel tableau dynamique et fixe la taille de la dimension zéro à 0.

Lorsque vous écrivez des scripts et des indicateurs, vous pouvez avoir besoin d'utiliser la fonction ArrayFree() peu souvent, car toute la mémoire utilisée est immédiatement libérée après l'arrêt du script, et dans les indicateurs personnalisés, le travail principal avec les tableaux est effectué en accédant aux tampons des indicateurs, dont les tailles sont automatiquement gérées par le sous-système exécutif du terminal.

Si vous devez gérer la mémoire par vous-même dans des conditions dynamiques complexes, la fonction ArrayFree() vous permettra de libérer explicitement et immédiatement la mémoire occupée par un tableau dynamique inutile.

Vous voyez ? Inutile.

Naturellement, une fois que la mémoire est libérée, et que vous l'allouez à nouveau en dimensionnant le tableau, personne ne pourra garantir son contenu.

Utiliser l'initialisation du tableau : ArrayInitialize()

 
Vitaly Murlenko:

Le code dans l'indicateur mql4 a cessé de fonctionner. comment puis-je le réparer ?

L'éditeur indique 'ObjectSetInteger' - aucune des surcharges ne peut être appliquée à l'appel de fonction.

Il a fonctionné pendant des années et s'est soudainement arrêté. C'est une honte, cependant.


else{// Иначе стрелка создана. Задаём её свойства
 ObjectSetInteger(ChartID(),Open_name,OBJPROP_ARROWCODE,OpenArrowCode);//код стрелки 232 // или 0 вместо ChartID() для текущего графика 
 ObjectSet(Open_name,OBJPROP_COLOR,ObjColor);//цвет стрелки
}

Mais pourquoi avez-vous mélangé deux styles ? Si vous utilisez la première ligne pour spécifier le code de la flèche, utilisez la deuxième ligne dans le même style :

ObjectSetInteger(0,Open_name,OBJPROP_COLOR,ObjColor); //цвет стрелки