Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 567

 

AlexeyVik, Vladon,

Sim, como geralmente é o caso, é bastante óbvio. É minha desatenção ou meu excesso de trabalho. Obrigado pela dica.

Outro erro ocorreu, nem mesmo um erro, mas um aviso na função:

// 1.5 Возвращает массив INT из элементов массива STRING. =================================================================================
void fCreat_StrToInt (string& fsa_Value[],                                     // Массив элементов string
                      int& fia_OUT[],                                          // Возвращаемый массив int
                      int fi_IND,                                              // Количество ячеек в массиве
                      int fi_Factor = 1,                                       // Множитель
                      string fs_NameArray = "")                                // Имя возвращаемого массива
{
    int    li_size = ArraySize (fsa_Value);
    string ls_row = "";
//----
    ArrayResize (fia_OUT, fi_IND);
    
    for (int li_int = 0; li_int < fi_IND; li_int++)
    {
        if (li_int < li_size)
        {
            fia_OUT[li_int] = StrToInteger (fsa_Value[li_int]) * fi_Factor;
        }
        else
        {
            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor;
        }
        ls_row = StringConcatenate (ls_row, fs_NameArray, "[", li_int, "] = ", fia_OUT[li_int], "; ");
    }
    
    if (fs_NameArray != "") Print (ls_row);
//----
}

Em linha:

            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor;
O código parece estar bem. Estas advertências devem ser ignoradas?
 
Qual é o aviso?
 
hoz:

AlexeyVik, Vladon,


Parece ser um código normal. Devemos ignorar estas advertências?


O que é normal lá?

void fCreat_StrToInt (string& fsa_Value[],                                     // Массив элементов string
                      int& fia_OUT[],                                          // Возвращаемый массив int
                      int fi_IND,                                              // Количество ячеек в массиве
                      int fi_Factor = 1,                                       // Множитель
                      string fs_NameArray = "")                                // Имя возвращаемого массива
{
    int    li_size = ArraySize (fsa_Value);
    string ls_row = "";
//----
    ArrayResize (fia_OUT, fi_IND);
    
    for (int li_int = 0; li_int < fi_IND; li_int++)
    {
        if (li_int < li_size)
        {
            fia_OUT[li_int] = StrToInteger (fsa_Value[li_int]) * fi_Factor; // это верно
        }
        else
        {
            fia_OUT[li_int] = StrToDouble (fsa_Value[li_size - 1]) * fi_Factor; // Это НЕ ВЕРНО !
        }
        ls_row = StringConcatenate (ls_row, fs_NameArray, "[", li_int, "] = ", fia_OUT[li_int], "; ");
    }
    
    if (fs_NameArray != "") Print (ls_row);

Você tem um descasamento de tipo (destacado em vermelho): Você está tentando passar um valor de tipo duplo para tipo int, que tem um intervalo de valores muito maior do que o int. Pode haver uma perda de valor. Certamente, o compilador o adverte sobre isso.
 
Vladon:
Qual é o aviso?
possible loss of data due to type conversion
 
VladislavVG:

O que há de normal nisso?

Você tem um descasamento de tipo (destacado em vermelho): Você está tentando passar um valor de tipo duplo para tipo int, que tem uma gama de valores muito maior do que int. Pode haver uma perda de valor. Certamente, o compilador adverte sobre isso.
Mas e quanto à conversão do tipo implícito? Embora eu concorde que isto possa causar um erro. É melhor fazer a conversão via StrToInteger imediatamente.
 

Como calcular o número de caracteres?

E como saber se é um dia de folga (sábado, domingo)?

 
hoz:
E a conversão do tipo implícito? Embora eu concorde, isso pode causar um erro. É melhor converter diretamente via StrToInteger.

Se você estivesse passando a int em dobro, não haveria problema. Você estaria passando um valor de um tipo com uma faixa menor para um tipo com uma faixa maior. E não haveria possível perda de dados. E, conseqüentemente, também não haveria nenhum aviso.
 

Olá a todos!

A documentação da MQL4 foi alterada. O tutorial não mudou.

Para utilizar as novas características da MQL4 é necessário estudar o tutorial MQL5 ?

Ou existe outra literatura especial?

 
kosmos0975:

Olá a todos!

A documentação da MQL4 foi alterada. O tutorial não mudou.

Para utilizar as novas características da MQL4 é necessário estudar o tutorial MQL5 ?

Ou existe outra literatura especial?

Não, você não tem. Se você estudar 4, estude documentação para 4. Embora, se alguma coisa, eles estejam de alguma forma entrelaçados.

A meu ver, o compilador está agora unificado (você pode escrever tanto para 4 como para sub-4). É por isso que a documentação é a mesma, exceto por algumas diferenças. Geralmente, aconselho a leitura da documentação para 4 e ficar longe de 5. É mais complicado, à primeira vista. Você não perderá nada com isso.

 
Eu acessei uma conta ativa através da empresa Teletrade do meu computador e meu tablet não abre uma conta ativa o tablet está rodando no andróide 4.2.2. qual é a razão?
Razão: