none
Convert String para Int32 RRS feed

  • Pergunta

  • Pessoal,

    Estou tentando converter a string "401200", mas recebo a mensagem:
    value was either too large or too small for an int32

    Pegando os 6 primeiros caracteres da string e convertendo em inteiro:
    Convert.ToInt32(txtNumero.Text.Substring(0,6))

    Como resolver isso ?
    Ja tentei converter para INT64 e INT16 e nao resolveu.

    Abracos

    quarta-feira, 20 de junho de 2012 06:06

Respostas

  • Olá,

    O Int32 suporta até 2.147.483.647, tem alguma coisa errada no valor do seu TextBox.

    Em modo debug experimente dar um Watch no valor txtNumero.Text.Substring(0,6) se possível poste para nossa informação que tipo de dado está nesse substring.

    Esse problema ocorre SEMPRE ou AS VEZES?

    De qualquer forma se quiser, seria bom validar se esse valor é um número antes de converter.
    Abaixo uma função que valida se trata-se de apenas números utilizando expressão regular:

    using System.Text.RegularExpressions;
    
    public static bool IsItNumber(string inputvalue)
    {
       Regex isnumber = new Regex("[^0-9]");
       return !isnumber.IsMatch(inputvalue);
    }
    
    //IsItNumber("28435"); -> return true;
    //IsItNumber("A4233"); -> return false;


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    • Marcado como Resposta AGA Neto sexta-feira, 22 de junho de 2012 05:48
    quarta-feira, 20 de junho de 2012 13:16

Todas as Respostas

  • Quando você debuga é este mesmo o valor que tem no textbox?

    Tem certeza que não tem algum caracter especial?


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 20 de junho de 2012 11:30
  • Olá,

    O Int32 suporta até 2.147.483.647, tem alguma coisa errada no valor do seu TextBox.

    Em modo debug experimente dar um Watch no valor txtNumero.Text.Substring(0,6) se possível poste para nossa informação que tipo de dado está nesse substring.

    Esse problema ocorre SEMPRE ou AS VEZES?

    De qualquer forma se quiser, seria bom validar se esse valor é um número antes de converter.
    Abaixo uma função que valida se trata-se de apenas números utilizando expressão regular:

    using System.Text.RegularExpressions;
    
    public static bool IsItNumber(string inputvalue)
    {
       Regex isnumber = new Regex("[^0-9]");
       return !isnumber.IsMatch(inputvalue);
    }
    
    //IsItNumber("28435"); -> return true;
    //IsItNumber("A4233"); -> return false;


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    • Marcado como Resposta AGA Neto sexta-feira, 22 de junho de 2012 05:48
    quarta-feira, 20 de junho de 2012 13:16
  • Caro A.G.A.

    Conseguiu resolver seu problema?

    Já que requisitou nossa ajuda, por favor, retorne com a dúvida ou solução.

    Abç!


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    quinta-feira, 21 de junho de 2012 14:08
  • Pessoal,

    Converti o int para long e resolveu o problema.

    Abracos

    sexta-feira, 22 de junho de 2012 05:48