Erros, bugs, perguntas - página 1204

 

Nada é impresso

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

Porque não?

 
marketeer:
Em geral, a investigação contínua produziu estes resultados. Ao colocar o cursor do rato sobre os tickers na revisão do mercado, aparece a dica de ferramenta, na qual Comércio: Não. Mas para o CFD russo, que são exibidos em preto, Comércio: Fechar é exibido (mais uma vez deve ser notado que o tempo é comércio e as carraças do símbolo vêm neste momento). Do qual concluo que o corretor tem vários níveis de comércio proibido, dos quais apenas alguns (ou mesmo apenas um) estão marcados a cinzento, e todos os restantes estão amontoados numa pilha comum com símbolos activos, uma vez que são exibidos a preto.

Fechar Apenas em tipo comercial significa permitir apenas o fecho das posições existentes. Por conseguinte, é mostrado em preto activo.

Os modos de operação são configurados no servidor de negociação.

 
Renat:

Fechar Apenas em tipo comercial significa permitir apenas o fecho das posições existentes. É por isso que é mostrado activo em preto.

Os modos de funcionamento são configurados no servidor comercial.

Não diz "Fechar apenas", mas "Fechar". Isto é um erro ou algumas outras nuances permanecem pouco claras?
 
marketeer:
Não diz "Fechar apenas", mas "Fechar". Será isto um erro ou existem outras nuances que permanecem pouco claras?
Fechar aqui significa Fechar apenas. Escreve-se apenas abreviadamente.
 
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. Compilado por

2. Quando um objecto é criado, o alerta é clrBlack.

3. Verificado em 4. 670 build

 
A100:

Nada é impresso

Porque não?

Obrigado pela mensagem.
Não é possível utilizar macros __FUNÇÃO__ e __FUNSÃO__ fora de um corpo funcional.

Adicionado novo erro de compilação: 377 "macro não pode aparecer fora de um corpo funcional".
 
ALXIMIKS:

1. Compilado por

2. Quando um objecto é criado, o alerta é clrBlack.

3. Verificado em 4. 670 build

Obrigado pela mensagem. Erro no compilador corrigido, o seu código será compilado com erro:
'line_color_befor' - redefinition; different type modifiers
Utilize o seguinte código para contornar este erro:
#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:

Erro durante a execução: fundição incorrecta de apontadores (construir 977, mas aconteceu de vez em quando antes)

Se mover algo (por exemplo, trocar declarações #importante) ou fazer 2 ficheiros em vez de 3 ou remover h() chamada - então em vez dos erros especificados ocorrem outros erros

Se recompor o código acima, ele acabará por chamar R::y em vez de L::y

Numa versão mais complexa, algumas funções comuns de módulos são chamadas antes (!) dos próprios construtores estáticos (como no exemplo acima f() é chamado antes de X::X, que por sua vez é correctamente chamado antes de OnStart). Vou tentar citar um exemplo, mas existem ficheiros enormes. Mas por vezes funciona correctamente, por isso o erro não está comigo porque a ordem de criação do objecto é definida pelo próprio compilador e eu não o posso alterar

Obrigado pelo correio Há um problema, está a ser investigado.

UPD: Fixo.
 
mql5:
Obrigado pelo correio Há um problema, estamos a resolvê-lo.

UPD: Fixo.

Cometi aí um erro https://www.mql5.com/ru/forum/1111/page1221#comment_1070267, não especifiquei que as funções são virtuais - se agora declarar R e L assim:

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 ); }
};
então L::y é chamado e R::y deve ser chamado porque são diferentes - (diferente por const e o ponteiro era para R)
 

Todos os terminais dos corretores deixaram de funcionar, incluindo o que descarreguei deste site...

Reiniciar não ajuda, reiniciar e reinstalar também, tudo estava a funcionar bem antes, não instalei nada no meu computador, também não instalei nada no terminal. apenas compras no mercado.