Errori, bug, domande - pagina 1204

 

Non viene stampato nulla

string g( string str = __FUNCTION__ ) { return ( str ); }
void OnStart()
{
        Print( g() );
}

Perché no?

 
marketeer:
In generale, l'indagine continua ha dato questi risultati. Quando si mette il cursore del mouse sopra i ticker nella revisione del mercato, appare il tooltip, in cui Trade: No. Ma per i CFD russi, che sono visualizzati in nero, viene visualizzato Trade: Close (ancora una volta va notato che il tempo è commercio e tick del simbolo venire in questo momento). Da ciò concludo che il broker ha diversi livelli di trading proibito, di cui solo alcuni (o anche solo uno) sono contrassegnati in grigio, e tutti gli altri sono ammucchiati in un mucchio comune con i simboli attivi, in quanto sono visualizzati in nero.

Chiudere solo nel tipo di trade significa permettere solo la chiusura delle posizioni esistenti. È quindi mostrato in nero attivo.

Le modalità di funzionamento sono impostate sul server di trading.

 
Renat:

Chiudere solo nel tipo di trade significa permettere solo la chiusura delle posizioni esistenti. Questo è il motivo per cui è mostrato attivo in nero.

Le modalità di funzionamento sono impostate sul server commerciale.

Non dice "Chiudi solo", ma "Chiudi". Si tratta di un errore o altre sfumature non sono chiare?
 
marketeer:
Non dice "Chiudi solo", ma "Chiudi". È un errore o ci sono altre sfumature che non sono chiare?
Close qui significa Close Only. È solo scritto in modo abbreviato.
 
class object_line : public CObject
{
public:
   static color line_color_befor;
};
static extern color object_line::line_color_befor = clrGreen;

void OnChartEvent(const int id,                            
                  const long& lparam,   
                  const double& dparam, 
                  const string& sparam){
   if (id == CHARTEVENT_OBJECT_CREATE)   
      Alert(object_line::line_color_befor);   
} 

1. Compilato da

2. Quando un oggetto viene creato, l'avviso è clrBlack.

3. Controllato su 4. 670 build

 
A100:

Non viene stampato nulla

Perché no?

Grazie per il messaggio.
Non potete usare le macro __FUNCTION__ e __FUNCSIG__ fuori dal corpo di una funzione.

Aggiunto nuovo errore di compilazione: 377 "la macro non può apparire al di fuori del corpo di una funzione".
 
ALXIMIKS:

1. Compilato da

2. Quando un oggetto viene creato, l'avviso è clrBlack.

3. Controllato su 4. 670 build

Grazie per il messaggio. Errore nel compilatore risolto, il tuo codice verrà compilato con errore:
'line_color_befor' - redefinition; different type modifiers
Usate il seguente codice per aggirare questo errore:
#include <object.mqh>

class object_line : public CObject
{
public:
   static color line_color_befor;
};

color input line_color_param=clrGreen;//object_line::line_color_befor

static color object_line::line_color_befor = line_color_param;

void OnChartEvent(const int id,                            
                  const long& lparam,   
                  const double& dparam, 
                  const string& sparam){
   if (id == CHARTEVENT_OBJECT_CREATE)   
      Alert(object_line::line_color_befor);   
} 
 
A100:

Errore durante l'esecuzione: casting errato dei puntatori (build 977, ma è successo di tanto in tanto prima)

Se spostate qualcosa (per esempio, scambiate le dichiarazioni #import) o fate 2 file invece di 3 o rimuovete la chiamata h() - allora invece degli errori specificati si verificano altri errori

Se ricomponi il codice sopra, finirà per chiamare R::y invece di L::y

In una versione più complessa, alcune funzioni comuni dei moduli sono chiamate prima (!) dei costruttori statici stessi (come se nell'esempio precedente f() fosse chiamata prima di X::X, che a sua volta è chiamata correttamente prima di OnStart). Cercherò di citare un esempio, ma ci sono file enormi. Ma a volte funziona correttamente, quindi l'errore non è mio, perché l'ordine di creazione degli oggetti è definito dal compilatore stesso e non posso cambiarlo

Grazie per il post C'è un problema, è sotto inchiesta.

UPD: Corretto.
 
mql5:
Grazie per il post C'è un problema, lo stiamo risolvendo.

UPD: Corretto.

Ho fatto un errore lì https://www.mql5.com/ru/forum/1111/page1221#comment_1070267, non ho specificato che le funzioni sono virtuali - se ora dichiarano R e L così:

class R { public:
        virtual void y( A* a ) const { PF       ((B *)a).g( 1 ); }
};
class L : public R { public:
        virtual void y( A* a )       { PF       ((B *)a).g( 2 ); }
};
allora L::y è chiamato e R::y dovrebbe essere chiamato perché sono diversi - (diversi per const e il puntatore era a R)
 

Tutti i terminali dei broker hanno smesso di funzionare, compreso quello che ho scaricato da questo sito...

Riavviare non aiuta, riavviare e reinstallare anche, tutto funzionava bene prima, non ho installato nulla sul mio computer, non ho installato nulla nemmeno sul terminale. solo acquisti nel mercato.