Errori, bug, domande - pagina 2242

 
darkangel8733:

Ciao, ho comprato un EA da te, "tartaruga" e non funziona in modalità standalone.

Sto solo dicendo. Se un Expert Advisor utilizza indicatori, anche standard, dovrebbe avere accesso ad essi. Ho già introdotto questa regola empirica.

 
A100:
La richiesta era solo una: aiutare, non ostacolare. Se pensate che la discussione non sia necessaria - non entrateci... Non sta a voi decidere (necessario/non necessario) - è a questo che servono l'amministrazione e i moderatori

Sono d'accordo, ma se non ti piacciono i consigli, allora semplicemente non c'è bisogno di rispondere, allora non ci saranno domande... ognuno scrive qui quello che ritiene opportuno, io ho visto bene di dare consigli, cioè di fornire aiuto gratuito, invece di gratitudine ho letto le lamentele... buona fortuna

 
Konstantin:

Sono d'accordo, ma se non ti piace il consiglio, semplicemente non devi rispondere

Questo è un buon consiglio... grazie per questo... Lo prendo
 

Come mai?

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

Perché il valore dell'array non è vuoto (zero)?

 
Aleksey Vyazmikin:

Come mai?

Perché il valore dell'array non è vuoto (zero)?

E se viene prima dimensionato e poi cancellato?

 
Vitaly Muzichenko:

E se viene prima dimensionato e poi cancellato?

Allora

2018.07.26 02:20:08.482 Pred_Ocenka_02 (Si Splice,M1)   array out of range in 'Pred_Ocenka_02.mq5' (76,27)
Non ha informazioni sulle dimensioni dopo la cancellazione.
 
Se
ArrayFree(SummArr);

Remove, allora anche il valore non è vuoto. L'array non è stato usato prima.

 

Alcune sciocchezze, ecco il codice tagliato in generale

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]);   
  }
//+------------------------------------------------------------------+

In uscita.

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

Per favore controlla, forse il mio terminale è impazzito.

O è normale e tutto dovrebbe essere spazzatura?

 

Il codice nell'indicatore mql4 ha smesso di funzionare. come posso sistemarlo?

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

L'editor dice 'ObjectSetInteger' - nessuno degli overload può essere applicato alla chiamata di funzione

Ha funzionato per anni e poi improvvisamente si è fermato. È un peccato, però.


 
Aleksey Vyazmikin:

Alcune sciocchezze, ecco il codice tagliato in generale

In uscita.

Per favore controlla, forse il mio terminale è impazzito.

O forse è normale e tutto dovrebbe essere spazzatura?

Libera il buffer di qualsiasi array dinamico e imposta la dimensione della dimensione zero a 0.

Quando si scrivono script e indicatori, potrebbe essere necessario utilizzare la funzione ArrayFree() non molto spesso, poiché tutta la memoria utilizzata viene immediatamente rilasciata dopo che lo script smette di funzionare, e negli indicatori personalizzati, il lavoro principale con gli array viene eseguito accedendo ai buffer degli indicatori, le cui dimensioni sono gestite automaticamente dal sottosistema esecutivo del terminale.

Se avete bisogno di gestire la memoria da soli in condizioni dinamiche complesse, la funzione ArrayFree() vi permetterà di liberare esplicitamente e immediatamente la memoria occupata da un array dinamico non necessario.

Vedi? Inutile.

Naturalmente, una volta che la memoria viene liberata da essa, e poi la si alloca di nuovo dimensionando l'array, nessuno garantirà il suo contenuto.

Utilizzare l'inizializzazione dell'array: ArrayInitialize()

Motivazione: