Como resolver o erro Indice fora dos limites da matriz
05/07/2012
0
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..
Posts
05/07/2012
James Pedreira
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,
05/07/2012
Rodrigo Ribeiro..
Clique aqui para fazer login e interagir na Comunidade :)