Como resolver o erro Indice fora dos limites da matriz

05/07/2012

0

Ola! estou fazendo uma função pra calcular um digito e esta dando um erro que não consigo tirar!

a função e essa

private string GeraCampoDigitavel(string CodBarra)
{
int i;
int c;
int Digitos;
int Inicio;

string Redutor = string.Empty;
string CampoAux = string.Empty;

Inicio = 0;
string resultado = string.Empty;

for (c = 1; c <= 4; c++)
{
CampoAux = CodBarra.Substring(Inicio, 11);
Digitos = 0;

for (i = 0; i <= 11; i++)
{
if (i % 2 != 0)
{
if ((Convert.ToInt32(CampoAux[i]) * 2) >= 10)// o erro esta acontecendo aqui quando acaba o lop
{
Redutor = (Convert.ToInt32(CampoAux[i]) * 2).ToString();
Digitos += Convert.ToInt32(Redutor[0]) + Convert.ToInt32(Redutor[1]);
}
else
{
Digitos += Convert.ToInt32(CampoAux[i]) * 2;
}
}
else
{
Digitos += Convert.ToInt32(CampoAux[i]);
}
}
Digitos = Digitos % 10;
if (Digitos != 0)
{
Digitos = 10 - Digitos;
}
resultado += CampoAux.ToString() + Convert.ToString(Digitos);
Inicio += 11;
}
return resultado;

}
Rodrigo Ribeiro..

Rodrigo Ribeiro..

Responder

Posts

05/07/2012

James Pedreira

Pelo que observei no seu código você preenche a variável~

CampoAux = CodBarra.Substring(Inicio, 11);

Desta forma sua variável CampoAux possui um tamanho de 11 ou seja de posições 0 a 10.


em seu loop você verifica valores de 0 até 11, desta forma ele não encontrará na posição 11 da variável CampoAux.
Se a intenção for percorrer todos os campos dessa variável acredito que seu loop deveria ser:

for (i = 0; i < 11; i++)

Espero ter ajudado.

abraço,
Responder

05/07/2012

Rodrigo Ribeiro..

Isso mesmo amigo! deslize meu! deu certo, obrigado
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar