Erros, bugs, perguntas - página 127

 
xeon:
O compilador não detecta a ausência do segundo sinal de igual como um erro.

Não tem de o fazer, o seu código não contém um erro.

int a = 0;
if(a=1){Print("TEST");}

e é idêntico a este código.

int a = 0;
a=1;
if(a){Print("TEST");}
 
xeon:
O compilador não detecta a ausência de um segundo sinal de igualdade como um erro.
for(int i=0;i<total_deal;i++)
        {
         //--- try to get deals ticket
         if(ticket=HistoryDealGetTicket(i)) // Предупреждение к этой строке
           {
            Deal.Ticket(ticket);

Mas dá um aviso, pelo menos para o meu código como este:

'DealInfo.mqh' DealInfo.mqh 1 1
a expressão não é booleano Shou History.mq5 60 19
0 erro(s), 1 aviso(s) 1 1
 
Urain:

Não é necessário, o seu código não contém um erro.

e é idêntico a este código.


E, em vão, por exemplo, o estúdio detecta este código como um erro.

Além disso, então parece que este código

int a = 0;
a=1;
if(a){Print("TEST");}

é idêntico a este:

int a = 19;
if(a=14){Print("TEST");}

digamos 0 = falso, 1 = verdadeiro, então o que é que os outros dígitos são iguais? 2,3,4, ...... :-)

Imho esta abordagem não leva a nada de bom, acrescenta apenas a possibilidade desnecessária de olhar através do erro.

 
xeon:

Imho, esta abordagem não faz nenhum bem, apenas acrescenta uma oportunidade extra de ver o erro.

A razão para acrescentar um valor não booleano é para que o utilizador possa ver o que está a fazer.

 

Se eu guardar o conjunto no terminal (no gráfico) e depois abri-lo no testador ou no terminal, está tudo bem. Mas se o guardar no testador e depois o abrir no terminal, todos os valores de variáveis de tipo não string são exibidos em abracadabra. Se eu clicar em OK, então quando eu abrir novamente a janela de parâmetros, ela vai parecer bem, todos os parâmetros serão substituídos por novos parâmetros correctamente, excepto os booleanos. TUDO o que era true torna-se falsa. No testador, o conjunto salvo do testador abre-se correctamente.

 

Desculpem o incómodo, o bug sobre o qual escrevi anteriormente ainda não foi corrigido. Ao executar o indicador dado na descrição da função CopySpread , o histórico de spread é desenhado com um buraco. O buraco cobre sempre o período desde o início do terminal até ao início do indicador. Parece que os spreads provenientes do servidor com cada novo tick não são registados no histórico dos spreads.Obrigado!

 

Recebo avisos do compilador:

conversão enum implícita
possível perda de dados devido à conversão do tipo

ao utilizar este cordão:

ENUM_POSITION_TYPE posType=PositionGetInteger(POSITION_TYPE);

O que está errado aqui?

Encontrei-o: deve usar longo

long posType=PositionGetInteger(POSITION_TYPE);

Depois outra pergunta. Esta construção irá funcionar correctamente

if(posType==POSITION_TYPE_BUY)

quando o pós-Type é definido como longo?

 
ENUM_POSITION_TYPE posType=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
 
gpwr:

Recebo avisos do compilador:

conversão enum implícita
possível perda de dados devido à conversão do tipo

ao utilizar este cordão:

O que está errado aqui?

Encontrei-o: deve usar longo

Depois outra pergunta. Esta construção irá funcionar correctamente

quando o pós-Type é definido como longo?

vai funcionar, é um aviso de conversão de tipo, pode ignorá-lo
 
AlexinSergey:

Desculpem o incómodo, o bug sobre o qual escrevi anteriormente ainda não foi corrigido. Ao executar o indicador dado na descrição da função CopySpread , o histórico de spread é desenhado com um buraco. O buraco cobre sempre o período desde o início do terminal até ao início do indicador. Parece que os spreads provenientes do servidor com cada novo tick não são registados no histórico dos spreads.Obrigado!

Obrigado, vamos lidar com o exemplo.
Razão: