public void valida(string linha, int numLinha)
        {
            if (linha.Length != 240)
            {
                textoValidacao += ("Linha: " + numLinha + " Fora do Padrão: quantidade de colunas é difente de 240! esta linha possui: " + linha.Length + " colunas<br>");
            }
            else
            {
                try
                {
                    // Descrição do Registro “HEADER” de Lote - “1”
                    string tipoOperacao    = linha.Substring(8, 1);     //	1.04 009 009 X(001) Tipo de Operação
                    string tipoServico     = linha.Substring(9, 2);     //	1.05 010 011 9(002) Tipo de Serviço
                    string formaLancamento = linha.Substring(11, 2);    //	1.06 012 013 9(002) Forma de Lançamento
                    string verLayoutLote   = linha.Substring(13, 3);    //	1.07 014 016 9(003) Versão do leiaute do lote
                    string filler8         = linha.Substring(16, 1);    //	1.08 017 017 X(001) Filler
                    string tipoInscricao   = linha.Substring(17, 1);    //	1.09 018 018 9(001) Tipo de inscrição
                    string numInscricao    = linha.Substring(18, 14);   //	1.10 019 032 9(014) Número da inscrição
                    string codConvenio     = linha.Substring(32, 6);    //	1.11 033 038 9(006) Código Convênio no Banco
                    string tipoCompromisso = linha.Substring(38, 2);    //	1.12 039 040 9(002) Tipo de Compromisso

                    string codCompromisso   = linha.Substring(40, 4);   //	1.13 041 044 9(004) Código do compromisso
                    string paramTrans       = linha.Substring(44, 2);   //	1.14 045 046 X(002) Parâmetro de transmissão
                    string filler15         = linha.Substring(46, 6);   //	1.15 047 052 X(006) Filler
                    string agContaCorrente  = linha.Substring(52, 5);   //	1.16 053 057 9(005) Agencia da Conta Corrente
                    string dvAgencia        = linha.Substring(57, 1);   //	1.17 058 058 X(001) DV da Agência
                    string numContaCorrente = linha.Substring(58, 12);  //	1.18 059 070 9(012) Número da Conta Corrente
                    string DvContaCorrente  = linha.Substring(70, 1);   //	1.19 071 071 X(001) DV da Conta Corrente
                    string digAgConta       = linha.Substring(71, 1);   //	1.20 072 072 X(001) Dígito da Agência/Conta
                    string nomeEmpresa      = linha.Substring(72, 30);  //	1.21 073 102 X(030) Nome da Empresa
                    string msgAviso1        = linha.Substring(102, 40); //	1.22 103 142 X(040) Mensagem de Aviso 1

                    string logradouro     = linha.Substring(142, 30);   //	1.23 143 172 X(030) Logradouro
                    string numLocal       = linha.Substring(172, 5);    //	1.24 173 177 9(005) Número no local
                    string complemento    = linha.Substring(177, 15);   //	1.25 178 192 X(015) Complemento
                    string cidade         = linha.Substring(192, 20);   //	1.26 193 212 X(020) Cidade
                    string cep            = linha.Substring(212, 5);    //	1.27 213 217 9(005) CEP
                    string complementoCep = linha.Substring(217, 3);    //	1.28 218 220 X(003) Complemento CEP
                    string siglaEstado    = linha.Substring(220, 2);    //	1.29 221 222 X(002) Sigla do Estado
                    string usoFebraban    = linha.Substring(222, 8);    //	1.30 223 230 X(008) Uso exclusivo FEBRABAN
                    string ocorrencias    = linha.Substring(230, 10);   //	1.31 231 240 X(010) Ocorrências

                    switch (tipoOperacao)
                    {
                    case "C": break;

                    case "D": break;

                    default: textoValidacao += ("Linha: " + numLinha + " Erro no campo: tipo de Operação = " + tipoOperacao + " : preencher com C (compromisso de pagamento) ou D (compromisso de recebimento)<br>");
                        break;
                    }

                    switch (tipoServico)
                    {
                    case "00": break;

                    case "05": break;

                    case "10": break;

                    case "20": break;

                    case "30": break;

                    case "50": break;

                    case "60": break;

                    case "70": break;

                    case "75": break;

                    case "80": break;

                    case "90": break;

                    case "98": break;

                    default: textoValidacao += ("Linha: " + numLinha + " Erro no campo: tipo de Serviço = " + tipoServico + " : preencher conforme tabela G025<br>");
                        break;
                    }

                    switch (formaLancamento)
                    {
                    case "01": break;

                    case "02": break;

                    case "03": break;

                    case "05": break;

                    case "10": break;

                    case "11": break;

                    case "30": break;

                    case "31": break;

                    case "41": break;

                    case "50": break;

                    default: textoValidacao += ("Linha: " + numLinha + " Erro no campo: tipo de Serviço = " + formaLancamento + " : preencher conforme tabela G029<br>");
                        break;
                    }

                    if (!verLayoutLote.Contains("041"))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: ver. do layout do lote = " + verLayoutLote + " : o pradão é 041<br>");
                    }

                    if (!filler8.Contains(" "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: filler 8 = " + filler8 + " : preencher com espaços<br>");
                    }

                    switch (tipoInscricao)
                    {
                    case "1": break;

                    case "2": break;

                    default: textoValidacao += ("Linha: " + numLinha + " Erro no campo: Num. Inscricao = " + tipoInscricao + " : preencher com 1 (pessoa física) ou 2 (pessoa jurídica)<br>");
                        break;
                    }


                    try
                    {
                        long.Parse(numInscricao);
                    }
                    catch (Exception erro)
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Num. Inscricao = " + linha.Substring(18, 32) + " : preencher com CPF ou CNPJ" + erro);
                    }

                    try
                    {
                        int.Parse(codConvenio);
                    }
                    catch (Exception erro)
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Cod. Convênio = " + linha.Substring(32, 38) + " : preencher com o código do convênio informado pelo Banco" + erro);
                    }

                    switch (tipoCompromisso)
                    {
                    case "01": break;

                    case "02": break;

                    case "03": break;

                    case "06": break;

                    case "11": break;

                    default: textoValidacao += ("Linha: " + numLinha + " Erro no campo: tipo de compromisso = " + tipoCompromisso + " : preencher com o tipo de compromisso:<br>");
                        textoValidacao      += ("Linha: " + numLinha + "  >>>>  01 (Pag. Fornecedor), 02 (Pag. Salários), 03 (Autopagamento), 06 (Salário Ampliação de Base), 11 (Débito em conta) <br>");
                        break;
                    }

                    try
                    {
                        int.Parse(codCompromisso);
                    }
                    catch (Exception e)
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Cod. compromisso = " + codCompromisso + " : preencher com o código do compromisso informado pelo Banco<br>");
                    }

                    if (paramTrans.Contains("  "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: param. de Transmissão = " + paramTrans + " : está em branco! preencher com o código informado pelo Banco<br>");
                    }

                    if (!filler15.Contains("      "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: filler 15 = " + filler15 + " : preencher com espaços<br>");
                    }

                    try
                    {
                        int.Parse(agContaCorrente);
                    }
                    catch (Exception e)
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: ag. conta corrente = " + agContaCorrente + " : preencher com a agência da conta<br>");
                    }

                    if (dvAgencia.Contains(" "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: DV. da agência = " + dvAgencia + " : está em branco! preencher com DV. da agência<br>");
                    }

                    try
                    {
                        long.Parse(numContaCorrente);
                    }
                    catch (Exception e)
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: num. da conta corrente = " + numContaCorrente + " : preencher com num. da conta corrente<br>");
                    }

                    if (DvContaCorrente.Contains(" "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: DV da Conta Corrente = " + DvContaCorrente + " : está em branco! preencher com DV da Conta Corrente<br>");
                    }

                    if (!digAgConta.Contains(" "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: dígito da Agência/Conta = " + digAgConta + " : preencher com espaços<br>");
                    }

                    if (nomeEmpresa.Contains("                              "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Nome da Empresa = " + nomeEmpresa + " : está em branco!<br>");
                    }

                    Auxiliar aux = new Auxiliar();
                    aux.apagaCaracterEspecial(numLinha, msgAviso1);

                    if (logradouro.Contains("                              "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Logradouro = " + logradouro + " : está em branco!<br>");
                    }

                    try
                    {
                        //int numLocalParse = int.Parse(numLocal.Trim());
                        //string.Format("%05d", int.Parse(numLocal.Trim())); // preenche com zero a esquerda
                        if (numLocal.Trim().Length < numLocal.Length)
                        {
                            textoValidacao += ("Linha: " + numLinha + " Erro no campo: Número no local = " + numLocal + " : preencher com o zero a esquerda<br>");
                        }
                    }
                    catch (Exception e)
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Número no local = " + numLocal + " : preencher com o número no local<br>");
                    }

                    if (complemento.Contains("               "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Atenção no campo: Complemento = " + complemento + " : está em branco!<br>");
                    }

                    if (cidade.Contains("                    "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Atenção no campo: Cidade = " + cidade + " : está em branco!<br>");
                    }


                    try
                    {
                        //int.Parse(cep.Trim());
                        //string.Format("%05d", int.Parse(cep.Trim())); // preenche com zero a esquerda
                        if (cep.Trim().Length < cep.Length)
                        {
                            textoValidacao += ("Linha: " + numLinha + " Erro no campo: CEP = " + cep + " : preencher com o zero a esquerda<br>");
                        }
                    }
                    catch (Exception e)
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: CEP = " + cep + " : preencher com o CEP<br>");
                    }

                    //if (cep.Contains("     "))
                    //{
                    //    textoValidacao += ("Linha: " + numLinha + " Atenção no campo: Complemento do CEP = " + cep + " : está em branco!<br>");
                    //}

                    if (complementoCep.Contains("   "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Atenção no campo: Complemento do CEP = " + complementoCep + " : está em branco!<br>");
                    }

                    Auxiliar auxEstado = new Auxiliar();
                    auxEstado.validaEstado(numLinha, siglaEstado);

                    if (!usoFebraban.Contains("        "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Uso exclusivo FEBRABAN = " + usoFebraban + " : preencher com espaços<br>");
                    }

                    if (!ocorrencias.Contains("          "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Ocorrências = " + ocorrencias + " : preencher com espaços<br>");
                    }
                }
                catch (Exception erro)
                {
                    textoValidacao += ("Linha: " + numLinha + " não consegui ler a linha do registro 1 (HEADER LOTE) = " + linha + "Erro: " + erro);
                }
            }
        }
        internal void validaRegistroB(string linha, int numLinha)
        {
            if (linha.Length != 240)
            {
                textoValidacao += ("Linha: " + numLinha + " Fora do Padrão: quantidade de colunas é difente de 240! esta linha possui: " + linha.Length + " colunas<br>");
            }
            else
            {
                try
                {
                    string usoFebraban      = linha.Substring(14, 3);   // B.06 015 017 X(003) Uso FEBRABAN - preencher com espaços
                    string tipoInscricao    = linha.Substring(17, 1);   // B.07 018 018 9(001) Tipo Inscrição - “1” = quando CPF (pessoa física) “2” = quando CNPJ (pessoa jurídica)
                    string numInscricao     = linha.Substring(18, 14);  // B.08 019 032 9(014) Número Inscrição - preencher com o número do CPF quando no campo B.07 for preenchido com “1” ou o número do CNPJ quando no campo B.07 for preenchido com “2”
                    string logradouro       = linha.Substring(32, 30);  // B.09 033 062 X(030) Logradouro - preencher com o nome da Rua, Avenida, Alameda
                    string numLocal         = linha.Substring(62, 5);   // B.10 063 067 9(005) Número no local - preencher com número do endereço
                    string complemento      = linha.Substring(67, 15);  // B.11 068 082 X(015) Complemento - preencher com o complemento do endereço
                    string bairro           = linha.Substring(82, 15);  // B.12 083 097 X(015) Bairro - preencher com o bairro do endereço
                    string cidade           = linha.Substring(97, 20);  // B.13 098 117 X(020) Cidade - preencher com cidade do endereço
                    string cep              = linha.Substring(117, 5);  // B.14 118 122 9(005) CEP - Código de Endereçamento Postal
                    string complementoCep   = linha.Substring(122, 3);  // B.15 123 125 X(003) Complemento CEP - complemento do Código de Endereçamento Postal
                    string siglaEstado      = linha.Substring(125, 2);  // B.16 126 127 X(002) UF do Estado
                    string dataVencimento   = linha.Substring(127, 8);  // B.17 128 135 9(008) Data do Vencimento
                    string valorDocumento   = linha.Substring(135, 15); // B.18 136 150 9(015) V99 Valor do Documento - preencher com zeros
                    string valorAbatimento  = linha.Substring(150, 15); // B.19 151 165 9(015) V99 Valor do Abatimento - preencher com zeros
                    string valorDesconto    = linha.Substring(165, 15); // B.20 166 180 9(015) V99 Valor do Desconto - preencher com zeros
                    string valorMora        = linha.Substring(180, 15); // B.21 181 195 9(015) V99 Valor da Mora - preencher com zeros
                    string valorMulta       = linha.Substring(195, 15); // B.22 196 210 9(015) V99 Valor da Multa - preencher com zeros
                    string codDocfavorecido = linha.Substring(210, 15); // B.23 211 225 X(015) Código Documento Favorecido - preencher com espaços. Quando o campo 1.06 for “10” – OP, preencher com o nº do favorecido. Nos demais casos, preencher com espaços
                    string usoFebraban2     = linha.Substring(225, 15); // B.24 226 240 X(015) Uso da FEBRABAN - preencher com espaço

                    if (!usoFebraban.Contains("   "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Uso FEBRABAN = " + usoFebraban + " : preencher com espaços!<br>");
                    }

                    switch (tipoInscricao)
                    {
                    case "1": break;

                    case "2": break;

                    default: textoValidacao += ("Linha: " + numLinha + " Erro no campo: Num. Inscricao = " + tipoInscricao + " : preencher com 1 (pessoa física) ou 2 (pessoa jurídica)<br>");
                        break;
                    }

                    try
                    {
                        long.Parse(numInscricao);
                    }
                    catch (Exception e)
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Num. Inscricao = " + numInscricao + " : preencher com CPF ou CNPJ<br>");
                    }


                    if (logradouro.Contains("                              "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Logradouro = " + logradouro + " : está em branco!<br>");
                    }

                    try
                    {
                        if (numLocal.Trim().Length < numLocal.Length)
                        {
                            if (numLocal.Trim().Length < 1)
                            {
                                textoValidacao += ("Linha: " + numLinha + " Erro no campo: Número no local = " + numLocal + " : favor preencher - Exemplo: 00007 <br>");
                            }
                            textoValidacao += ("Linha: " + numLinha + " Erro no campo: Número no local = " + numLocal + " : preencher com o zero a esquerda<br>");
                        }
                    }
                    catch (Exception e)
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Número no local = " + numLocal + " : preencher com o número no local<br>");
                    }

                    if (complemento.Contains("               "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Atenção no campo: Complemento = " + complemento + " : está em branco!<br>");
                    }

                    if (bairro.Contains("               "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Bairro = " + logradouro + " : está em branco!<br>");
                    }

                    if (cidade.Contains("                    "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Atenção no campo: Cidade = " + cidade + " : está em branco!<br>");
                    }

                    if (cep.Trim().Length < cep.Length)
                    {
                        if (cep.Trim().Length < 1)
                        {
                            textoValidacao += ("Linha: " + numLinha + " Erro no campo: CEP = " + cep + " : preencher com o zero a esquerda<br>");
                        }
                        else
                        {
                            textoValidacao += ("Linha: " + numLinha + " Erro no campo: CEP = " + cep + " : preencher com o zero a esquerda<br>");
                        }
                    }

                    if (cep.Contains("   "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Atenção no campo: Complemento do CEP = " + cep + " : está em branco!<br>");
                    }

                    if (complementoCep.Trim().Length < complementoCep.Length)
                    {
                        if (complementoCep.Trim().Length < 1)
                        {
                            textoValidacao += ("Linha: " + numLinha + " Erro no campo: CEP = " + complementoCep + " : preencher com o zero a esquerda<br>");
                        }
                        else
                        {
                            textoValidacao += ("Linha: " + numLinha + " Erro no campo: CEP = " + complementoCep + " : preencher com o zero a esquerda<br>");
                        }
                    }

                    if (complementoCep.Contains("   "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Atenção no campo: Complemento do CEP = " + complementoCep + " : está em branco!<br>");
                    }

                    Auxiliar auxEstado = new Auxiliar();
                    auxEstado.validaEstado(numLinha, siglaEstado);
                    textoValidacao += auxEstado.TextoValidacao;

                    try
                    {
                        DateTime dataVenc = DateTime.ParseExact(dataVencimento, "ddMMyyyy", CultureInfo.InvariantCulture);
                        if (dataVenc < (DateTime.Now.AddDays(-1)))
                        {
                            textoValidacao += ("Linha: " + numLinha + " Atenção no campo: Data de Vencimento = " + dataVencimento + " : já está vencida!<br>");
                        }
                    }
                    catch (Exception erro) { textoValidacao += ("Linha: " + numLinha + " Erro no campo: Data de Vencimento = " + dataVencimento + " : preencher com a data de vencimento<br>"); }
                    //faz o resto logo!!

                    if (!valorDocumento.Contains("000000000000000"))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Valor do Documento = " + valorDocumento + " : preencher com zeros!<br>");
                    }

                    if (!valorAbatimento.Contains("000000000000000"))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Valor do Abatimento = " + valorAbatimento + " : preencher com zeros!<br>");
                    }

                    if (!valorDesconto.Contains("000000000000000"))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Valor do Desconto = " + valorDesconto + " : preencher com zeros!<br>");
                    }

                    if (!valorMora.Contains("000000000000000"))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Valor da Mora = " + valorMora + " : preencher com zeros!<br>");
                    }

                    if (!valorMulta.Contains("000000000000000"))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Valor da Multa = " + valorMulta + " : preencher com zeros!<br>");
                    }

                    //faz essa função logo!!
                    // codDocfavorecido = linha.Substring(210, 15); // B.23 211 225 X(015) Código Documento Favorecido - preencher com espaços.
                    // Quando o campo 1.06 for “10” – OP, preencher com o nº do favorecido. Nos demais casos, preencher com espaços

                    if (!usoFebraban2.Contains("               "))
                    {
                        textoValidacao += ("Linha: " + numLinha + " Erro no campo: Uso FEBRABAN = " + usoFebraban + " : preencher com espaços!<br>");
                    }
                }
                catch (Exception erro)
                {
                    textoValidacao += ("Linha: " + numLinha + " não consegui ler a linha do registro J = " + linha + "<br>" + erro);
                }
            }
        }