Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
MathIsValidNumber() aceita um duplo. Por favor, verifique a documentação.
Você está dando uma seqüência.
Se você não continuar ignorando meus comentários sobre o uso de #propriedade estrita, você verá que o compilador o adverte sobre isto.
Se você pegar uma cadeia de letras e transformá-la em duplo, o valor do duplo se torna 0.
0 é um número válido.
Por isso, seu código está retornando verdadeiro.
MathIsValidNumber() aceita um duplo. Por favor, verifique a documentação.
Você está dando uma seqüência.
Se você não continuar ignorando meus comentários sobre o uso de #propriedade estrita, você verá que o compilador o adverte sobre isto.
Se você pegar uma cadeia de letras e transformá-la em duplo, o valor do duplo se torna 0.
0 é um número válido.
Por isso, seu código está retornando verdadeiro.
Mas você não me disse em sua resposta que MathIsValidNumber() compara apenas o dobro, e não cordas. A propósito, qual número não é um número válido? Exceto números complexos ou infinitos, e quem quer utilizá-los na MQL4, a propósito. De qualquer forma, a "Palavra-chave" parece enganadora.
Mas você não me disse em sua resposta que MathIsValidNumber() compara apenas o dobro, e não strings.
Presumi que você poderia ter se dado ao trabalho de verificar a documentação...
E se você não continuasse ignorando meus conselhos sobre #propriedade rigorosa...
Então agora pergunto novamente, qual é o comando para dizer ao compilador para decidir que uma variável contém um fio e não qualquer forma de número? Obrigado por sua resposta antecipada.
Se você não espera que o valor seja 0, digite a string para um duplo e teste que não é igual a 0.
Presumi que você poderia ter se dado ao trabalho de verificar a documentação...
E se você não continuasse ignorando meus conselhos sobre #propriedade rigorosa...
Se você não espera que o valor seja sempre 0, digite o dobro e teste que não é igual a 0.
Mas o que acontece com o número zero. Presumo que seja um valor duplo, bem como um valor inteiro. Quando você lança a string ele retorna 0, quando você insere 0, ele retorna 0. Então...?
Sim, isso é um problema.
Você poderia fazer uma comparação de cordas se o valor de elenco = 0
i.e. if(cast_value == 0 && str_value == "0")
Mas você teria que pensar em 0,0 ou 0,00 sendo inseridos.
Você poderia estourar a corda em uma matriz de caracteres e testar cada caractere.
Depende de quão importante isto é.
{
//---
ObjectCreate("SimultaneousReleaseIndex1",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex1",OBJPROP_TEXT,"Four");
ObjectCreate("SimultaneousReleaseIndex2",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex2",OBJPROP_TEXT,"44");
ObjectCreate("SimultaneousReleaseIndex3",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex3",OBJPROP_TEXT,"Forty4");
ObjectCreate("SimultaneousReleaseIndex4",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex4",OBJPROP_TEXT,".1234567890");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex1",OBJPROP_TEXT)))
Print("text1 is numeric");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex2",OBJPROP_TEXT)))
Print("text2 is numeric");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex3",OBJPROP_TEXT)))
Print("text3 is numeric");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex4",OBJPROP_TEXT)))
Print("text4 is numeric");
}
//---
bool IsNumeric(string text)
{
int length=StringLen(text);
for(int i=0;i<length;i++)
{
int char1=StringGetChar(text,i);
if((char1>47 && char1<58) || char1==46)
continue;
else
return(false);
}
return(true);
}
//+------------------------------------------------------------------+
{
//---
ObjectCreate("SimultaneousReleaseIndex1",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex1",OBJPROP_TEXT,"Four");
ObjectCreate("SimultaneousReleaseIndex2",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex2",OBJPROP_TEXT,"44");
ObjectCreate("SimultaneousReleaseIndex3",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex3",OBJPROP_TEXT,"Forty4");
ObjectCreate("SimultaneousReleaseIndex4",OBJ_LABEL,0,0,0);
ObjectSetString(0,"SimultaneousReleaseIndex4",OBJPROP_TEXT,".1234567890");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex1",OBJPROP_TEXT)))
Print("text1 is numeric");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex2",OBJPROP_TEXT)))
Print("text2 is numeric");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex3",OBJPROP_TEXT)))
Print("text3 is numeric");
if(IsNumeric(ObjectGetString(0,"SimultaneousReleaseIndex4",OBJPROP_TEXT)))
Print("text4 is numeric");
}
//---
bool IsNumeric(string text)
{
int length=StringLen(text);
for(int i=0;i<length;i++)
{
int char1=StringGetChar(text,i);
if((char1>47 && char1<58) || char1==46)
continue;
else
return(false);
}
return(true);
}
//+------------------------------------------------------------------+
Sim, isso é um problema.
Você poderia fazer uma comparação de cordas se o valor de elenco = 0
i.e. if(cast_value == 0 && str_value == "0")
Mas você teria que pensar em 0,0 ou 0,00 sendo inseridos.
Você poderia estourar a corda em uma matriz de caracteres e testar cada caractere.
Depende de quão importante isto é.
Sim, esse tipo de coisa.
Você precisaria ter cuidado com isso:
Sim, esse tipo de coisa.
Você precisaria ter cuidado:
Ernst Van Der Merwe: