Como posso verificar se o conteúdo de uma variável é numérico?

 
Olá a todos. Como posso verificar se o conteúdo de uma variável é numérico, especialmente o conteúdo de um objeto de caixa de texto no chat? Eu tentei o seguinte, mas não funcionou:

ObjectSetString(0,"SimultaneousReleaseIndex",OBJPROP_TEXT,"Four");

if (MathIsValidNumber(ObjectGetString(0,"SimultaneousReleaseIndex",OBJPROP_TEXT))==true){Print("Object Text Is Numeric");}
Se o fato continuava indicando verdadeiro, se OBJPROP_TEXT é numérico ou não. Qual poderia ser a solução para o problema. Obrigado de antemão.
 

O MathIsValidNumber não funciona dessa forma. Ele não entenderia "quatro" como mais do que "quatro" ou "quatro" ou "quatro" ou "vier" ou "quatre" ou "quatro".

Se você lançar "Quatro" como um duplo, o resultado é 0.

Como 0 é um número válido, sua função retorna verdadeiro.

Você precisará construir em suas próprias conversões de palavras para números, se quiser alcançar isso.

Seu compilador deveria tê-lo avisado sobre uma conversão implícita... você tem

#property strict

no topo do seu código?

 
honest_knave:

O MathIsValidNumber não funciona dessa forma. Ele não entenderia "quatro" como mais do que "quatro" ou "quatro" ou "quatro" ou "vier" ou "quatre" ou "quatro".

Se você lançar "Quatro" como um duplo, o resultado é 0.

Como 0 é um número válido, sua função retorna verdadeiro.

Você precisará construir em suas próprias conversões de palavras para números, se quiser alcançar isso.

Seu compilador deveria tê-lo avisado sobre uma conversão implícita ... você tem

#property strict

no topo do seu código?

Acho que você não entendeu a pergunta. Eu escrevi o código acima e espera-se que o compilador retorne falso, já que "Quatro" não é um número. Mas está retornando verdadeiro (o que significa que "Quatro" é um número). Como posso codificá-lo apropriadamente? Eu não estou pedindo para converter "Quatro" em um número.
 

Eu acho que você não entendeu a resposta

Se você empurrar um fio como "Quatro" ou "banana" ou "MetaCotações" em um duplo o resultado é 0.

0 é um número válido.

Se você estivesse usando #property strict seu compilador o teria alertado para este problema.

Você pode testar que o "número" não é 0, mas você não pode traçar se ele foi inserido deliberadamente como 0, ou se foi apenas convertido em 0 na fundição.

   ObjectSetString(0,"SimultaneousReleaseIndex",OBJPROP_TEXT,"Four");
   double as_double = (double) ObjectGetString(0,"SimultaneousReleaseIndex",OBJPROP_TEXT);
   if(as_double !=0 && MathIsValidNumber(as_double)) Print("Object Text Is Numeric");
 
honest_knave:

Eu acho que você não entendeu a resposta

Se você empurrar um fio como "Quatro" ou "banana" ou "MetaCotações" em um duplo o resultado é 0.

0 é um número válido.

Se você estivesse usando #property strict seu compilador o teria alertado para este problema.

Por favor, verifique meu código inicial novamente. Acabei de fazer uma pequena correção. É suposto ser
ObjectSetString(0,"SimultaneousReleaseIndex",OBJPROP_TEXT,"Four");
e não
ObjectSetInteger(0,"SimultaneousReleaseIndex",OBJPROP_TEXT,"Four");
Desculpe pelo inconveniente. Agora você também pode corrigir sua resposta. Obrigado, pois antecipo sua amável resposta. Acho que não estou usando #propriedade estrita.
 

Por favor, leia meu post novamente.

Você concorda que 0 é um número válido?

 
honest_knave:

Por favor, leia meu post novamente.

Você concorda que 0 é um número válido?

É claro, 0 é um número válido. Por que perguntar?
 
macpee:
É claro, 0 é um número válido.

Então, qual parte da minha resposta você não entendeu?

Reiterar novamente:

honest_knave:

Se você lançar "Quatro" como um duplo, o resultado é 0.

Como 0 é um número válido, sua função retorna verdadeiro.

honest_knave:

Se você empurrar um fio como "Quatro" ou "banana" ou "Metaquotes" em um duplo, o resultado é 0.

0 é um número válido.

 
honest_knave:
Então, qual parte da minha resposta você não entendeu?
Mas o OBJPROP_TEXT é "Quatro" e não "0". Além disso, você disse que consideraria "Quatro" como "0", já que ... Agora a pergunta é: eu empurrei "Quatro" para o dobro? Qual parte do meu código pressionou "Quatro" ou "banana" ou "Metaquote" para dobrar?
 
macpee:
Mas o OBJ_TEXT é "Quatro" e não "0". Além disso, você disse que consideraria "Quatro" como "0", já que ... Agora a pergunta é: eu empurrei "Quatro" para o dobro?

Se eu dissesse para fazer um número de "sdgfjhsdfkjdshfkjsfdhskdjh", que número você me daria?

 
honest_knave:

Se eu dissesse para fazer um número de "sdgfjhsdfkjdshfkjsfdhskdjh", que número você me daria?

0, é claro. Mas a pergunta correspondente ao código que escrevi é que você não me pediu para fazer um número de "sdgfjhsdfkjdshfkjsfdhskdjh". Mas para decidir se "sdgfjhsdfkjdshfkjsfdhskdjh" é um número ou não. Portanto, acho que você pode fazer um número com "sdgfjhsdfkjdshfkjsfdhskdjh". Mas o fato é que o "sdgfjhsdfkjdshfkjsfdhskdjh" não é um número.
Razão: