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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar