Errori, bug, domande - pagina 2565

 
Igor Makanu:

Non ho intenzione di discutere

Ho deciso di descrivere il problema che stiamo discutendo. A proposito, il comportamento di MQL è diventato sempre più simile a quello di C#, il codice non si compila

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; }

};

A a;
//+------------------------------------------------------------------+
void OnStart()
{
   a.inc(); //code generation error 
   A::inc();
   
}
//_______________________________________________________________________

Ho implementato il metodo Inc() - funziona con i campi protetti

se ho aggiunto un modificatore statico - dove dovrebbe smettere di controllare il compilatore? - ho deciso che ho bisogno di un punto di ingresso a un oggetto fuori dallo scopo?

 
Igor Makanu:

Se avete scritto un metodo/campo statico o applicato un ::: - non fate affidamento sul compilatore

I bug capitano. Scrivo il codice come prima: this, ::, const, static, private, public, protected sono messi ovunque sia possibile.

Ne ho bisogno prima di tutto per una rapida comprensione del mio codice. In secondo luogo, voglio che il compilatore mi aiuti mentre scrivo il mio codice. Mi aiuta molto.


Ieri ho affrontato per la prima volta una situazione simile. Ho scritto un codice di 5Kb di cui una parte è stata copiata e incollata da vari frammenti. E quando l'ha compilato per la prima volta non è apparso un solo errore o avvertimento. Sono rimasto sorpreso.

 
Igor Makanu:

Ho deciso di descrivere il problema che stiamo discutendo

//+------------------------------------------------------------------+
class A
{
private:
   int               count;
public:
                     A():count(0) {}
   static void       inc()        { count++; } // Здесь ошибка, о которой компилятор сейчас не сообщает.

};
 
Igor Makanu:

Ho deciso di descrivere il problema che stiamo discutendo. A proposito, il comportamento di MQL assomiglia sempre più a C#, il codice non si compila

il metodo inc() - funziona con campi protetti

se ho aggiunto un modificatore statico - dove dovrebbe fermarsi il compilatore a controllare? - ho preso una decisione che ho bisogno di un punto di ingresso a un oggetto fuori dallo scopo, giusto?

La vostra variabile di conteggio non è statica.

Come fa una funzione statica a sapere a quale oggetto appartiene questa variabile?

 
Koldun Zloy:

Il vostro numero di variabili non è statico.

Come farà una funzione statica a sapere a quale oggetto appartiene questa variabile?

non un principio, voglio dire che qualsiasi implementazione di lavoro con metodi statici non avrà un controllo completo da parte del compilatore, e l'intera responsabilità del controllo ricade sul programmatore

ok, non importa, perché non importa - ho scritto la stessa cosa due volte in un giornohttps://www.mql5.com/ru/forum/1111/page2564#comment_13249284

 
Igor Makanu:

Voglio dire che qualsiasi implementazione di metodi statici non sarà completamente validata dal compilatore, e tutta la responsabilità del controllo ricade sul programmatore

Dove hai letto questo?

L'hai inventato tu e lo ripeti senza fermarti?

 
Andrey Barinov:

Dove l'hai letto?

Te lo sei inventato tu e continui a ripeterlo?

Non l'ho inventato io, è la mia opinione... come, in linea di principio, chiudere tutto il lavoro con la statica solo all'interno della statica come in C# - allora non ci saranno domande o errori ;)

 
Slava:

Alcune domande sulla piattaforma:

1. sarà aggiunto un intervallo di trading ammissibile per i VP tramite MOEX (ad esempio EURRUB_TOM)? In questo momento è impossibile sapere con certezza se sarà impostato un limite, poiché non c'è accesso alla gamma (prezzi massimi e minimi possibili). Si prega di aggiungere.

2. È possibile aggiungere al terminale e al meta-editor uno stato di salvataggio automatico ogni N minuti? Molto carente, poiché con una disconnessione improvvisa si torna allo stato di partenza del programma con perdita di tutte le modifiche! Molto stressante!

 

MQ, siete a posto con lo stoccaggio? Ci vogliono 10-20 secondi per impegnare un file. Una volta era istantaneo...

Aggiunto: a volte il commit si blocca...

 
Nell'indicatore sul grafico con lo strumento personalizzato, chiamando la funzione CopyBuffer(con l'handle della solita maschera per i simboli reali, ad esempio per EURUSD) ritorna l'errore 4806. Il simbolo personalizzato è basato sulla formula XAUUSD/31.1035*USDRUB. Lo stesso indicatore personalizzato con le stesse impostazioni funziona bene su un grafico reale (come XAUUSD, GBPUSD ecc.). Quale potrebbe essere il problema?