Erros, bugs, perguntas - página 1331

 

Assim - haveria realmente uma ambiguidade

void f( uint )  { Print( __FUNCSIG__ ); }
void f( int  )  { Print( __FUNCSIG__ ); }
void OnStart()
{
        char ch = 0;
        f( ch ); // неопределенность 
}

que é estranhamente ultrapassada pelo compilador se reescrever o exemplo de forma diferente

#import "Test.ex5"
        void f( uint );
#import
        void f( int  )  { Print( __FUNCSIG__ ); }
void OnStart()
{
        char ch = 0;
        f( ch ); // вызывается f(int), а должна генерироваться неопределенность
}
 
A vossa verdade
 
Não sei se isto já foi mencionado antes. No MetaEditor, se o nome da variável de entrada coincide com o nome da variável local (ou nome do campo de classe), este último é destacado a vermelho em todo o lado, tal como a variável de entrada, o que causa confusão na leitura do código.
 
Alexey Navoykov:
Não sei se já foi dito antes ou não. No MetaEditor se o nome da variável de entrada coincidir com o nome da variável local (ou nome do campo de classe), este último é marcado a vermelho em todo o lado, bem como a variável de entrada, o que causa confusão na leitura do código.

dar nomes idênticos a entidades de código é uma tentativa de se atirar no pé :)

É mais fácil mudar o nome de uma variável de entrada e não terá problemas e confusão...

 

MT4/845, Windows7/64 bit. Pergunta sobre o texto para uma nova linha com \n. Eu fiz um guião:

#property strict

string t1="Text_1";
string t2="Text_2";

void OnStart()
  {
   Print(t1+"\n "+t2);
   Print("Text_3"+"\n Text_4");
  }

Resultado:


Esperava que os valores Text_2 e Text_4 estivessem em outras linhas. Por favor, informe o que está errado.

 
Konstantin Karpov:

dar nomes idênticos a entidades de código é uma tentativa de se atirar no pé :)

É mais fácil mudar o nome de uma variável de entrada e não terá quaisquer problemas ou confusão...

Os seus conselhos não fazem sentido na prática. Ninguém dá nomes idênticos de propósito. O código de função local vive a sua própria vida separada, enquanto o programa externo vive a sua própria vida. E os nomes das variáveis externas podem mudar com o tempo e novas variáveis externas podem ser acrescentadas.E se depois disso, de repente uma de centenas de funções tiveruma variável local com o mesmo nome, o que acha que devemos renomear a variável global? Não deve procurar desculpas para os bugs dos criadores.
 

MT4/845, Windows7/64 bit. Roteiro:

#property strict

double d1 = 2.009745110811111111111111111;
double d2 = 3.654;
double d3;
//---
void OnStart()
  {
   d3=d1/d2;
   Print("A: d3 = ",DoubleToString(d3));
   Print("B: d3 = ",DoubleToStr(d3));
   Print("C: d3 = ",DoubleToString(d3,16));
   Print("D: d3 = ",DoubleToString(d3,8));
   Print("E: d3 = ",DoubleToString(NormalizeDouble(d3,8)));
   Print("F: d3 = ",DoubleToString(NormalizeDouble(d3,7)));
   Print("G: d3 = ",DoubleToString(NormalizeDouble(d3,8),7));
   Print("H: d3 = ",DoubleToString(NormalizeDouble(d3,8),8));
  }
//+------------------------------------------------------------------+

Resultado:


Alguém sabe como imprimir o número 0.55001234 ?

 
Maxim Khrolenko:

MT4/845, Windows7/64 bit. Roteiro:

Resultado:


Alguém sabe como imprimir o número 0.55001234 ?

 Print("C: d3 = ",DoubleToString(d3,8));

 
Maxim Khrolenko:

MT4/845, Windows7/64 bit. Pergunta sobre o texto para uma nova linha com \n. Fez um guião:

Aparentemente um erro em MT4 (em MT5 está tudo bem)
 
A100:
Aparentemente um bug em MT4 (MT5 está bem)
Estou a ver, espero que os criadores prestem atenção a isto.