Jump to content
rtavix

Problema na leitura do Arquivo

Recommended Posts

Estou com uma certa dificuldade de utilizar outros meios para a leitura de um determinado arquivo. tenho o seguinte método:

 

private static void ProcessaArquivo(string FullPathFile)
        {
            try
            {
                
                bool Mover = true;

                string[] StringLinha = System.IO.File.ReadAllLines(FullPathFile);
                string CodBarra = "";

                for (int line = 0; line < StringLinha.Length; line++)
                {
                    string DtPagamento = "";
                    string VlrDocumento = "";
                    string Protocolo = "";
                    string Registro = "";
                    string Emissao = "";

                    #region Recupera o Código de Barra

                    if (StringLinha[line].Contains("Cod. Barras:"))
                    {
                        CodBarra += StringLinha[line].Replace("Cod. Barras:", "");
                        line += 2;
                    }
                    if (CodBarra != "")
                    {
                        CodBarra += StringLinha[line];
                        CodBarra = CodBarra.Replace(" ", "");
                    }

                    #endregion

                    if (CodBarra == "")
                        continue;

                    line += 6;

                    #region Data de Pagamento

                    if (StringLinha[line].Contains("Dt.Pagamento:"))
                    {
                        DtPagamento += StringLinha[line].Replace("Dt.Pagamento:", "").Replace(" ", " ");
                    }

                    #endregion

                    line += 2;

                    #region Valor do Documentos

                    if (StringLinha[line].Contains("Vlr.Documento:"))
                    {
                        VlrDocumento += StringLinha[line].Replace("Vlr.Documento:", "").Replace(" ", "");
                    }

                    #endregion

                    line += 2;

                    #region Protocolo

                    if (StringLinha[line].Contains("Protocolo:"))
                    {
                        Protocolo += StringLinha[line].Replace("Protocolo:", "").Replace(" ", "");
                    }

                    #endregion

                    line += 12;

                    #region Registro

                    if (StringLinha[line].Contains("Registro:"))
                    {
                        Registro += StringLinha[line].Replace("Registro:", "");
                    }

                    #endregion

                    line += 2;

                    #region Emissao

                    if (StringLinha[line].Contains("Emissao.:"))
                    {
                        Emissao += StringLinha[line].Replace("Emissao.:", "");
                    }

                    #endregion

              }
       CodBarra = "";
                }

                if (Mover)
                {
                    MoveFile(FullPathFile);
                }



            }
            catch (Exception)
            {
                throw;
            }
        }

 

Existe uma outra forma de utilizar algo como:

 

String[] lines = File.ReadAllLines(Filename);  
    VoucherInfo vi = null;
    Boolean InBarCodes = false;


if (line.StartsWith(CodBarras))  
      {  
        String codigoBarras = line.Split(new Char[] { ':' })[1].Trim();  
        vi.CodBarras.Add(codigoBarras);  
        InBarCodes = true;  
        continue;  
      }  
      if (InBarCodes)  
      {  
        vi.codigoBarras.Add(line.Trim());  
      }  

 

Gostaria de ver uma melhor forma de ler esses dados mencionados acima, sem depender da quantidade de linhas até chegar em cada um, tentei algo relacionado ao código logo acima dessa explicação, mas nada que me ajudou, alguém teria uma ideia, uma sugestão do que eu poderia estar fazendo?

Pensei em algo assim também:

if (!StringLinha[line].Contains("Cod. Barras:") && !StringLinha[line].Contains("Dt.Pagamento:") && !StringLinha[line].Contains("Vlr.Documento:") &&
                        !StringLinha[line].Contains("Protocolo:") && !StringLinha[line].Contains("Registro:") && !StringLinha[line].Contains("Emissao.:"))
                    {
                        continue;


          Console.WriteLine(StringLinha[line]);
                     }

 

Funciona em parte, porque tenho o código de barras que possui a numeração na linha de cima e o restante da numeração desse código de barras na próxima linha, porém ele só está pegando a primeira numeração, eu teria necessidade de concatenar essa quebras de linhas nesse respectivo código do if, mas sem sucesso.

Estou postando essas informações detalhadas, mas estou a disposição para explicar mais ainda. Eu só preciso ler esses determinados campos, usando a primeira lógica postada ele funciona, porém gostaria de aplicar em cima do que já tenho uma lógica que não fica dependendo em qual posição de linha certos campos estão ou deixa de estar, pois peguei arquivo aqui que não vem na mesma posição.

Share this post


Link to post
Share on other sites

Tenta explicar melhor!

Como é a estrutura do arquivo?
O que você deseja ler? todas as linhas? Achar uma linha específica?

Share this post


Link to post
Share on other sites

qual erro esta gerando ?

Share this post


Link to post
Share on other sites
Em 09/10/2018 at 15:11, xanburzum disse:

qual erro esta gerando ?

Consegui resolver, estava passando o valor como nulo, por isso não funcionava.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Neto Dinizz
      Olá bom dia,

      tenho um projeto MVC, preciso adicionar uma classe WCF e aproveitar as referencias já existente do entity, crei uma pasta e adicionei o serviço, Service.svc e IService.cs, o WCF alterou webconfig do projeto e parou de rodar, voltei o webconfig para o original, antes do de incluir a classe WCF, voltou a funcionar, porém o serviço WCF não funciona. Tenho algo para alterar no webconfig, para os dois rodarem juntos? Segue abaixo o código do webconfig alterado após incluir a classe WCF:

      <!-- //EXCLUÍDO AO ADICIONAR CLASSE WCF -->
      <system.webServer>
      <validation validateIntegratedModeConfiguration=false/>
      <modules>
      <remove name=ApplicationInsightsWebTracking/>
      <add name=ApplicationInsightsWebTracking type=Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web preCondition=managedHandler/>
      </modules>
      </system.webServer>
      <!-- //EXCLUÍDO AO ADICIONAR CLASSE WCF -->

      <!-- //INSERIDO AO ADICIONAR CLASSE WCF
      <system.serviceModel>
      <behaviors>
      <serviceBehaviors>
      <behavior name=>
      <serviceMetadata httpGetEnabled=true httpsGetEnabled=true />
      <serviceDebug includeExceptionDetailInFaults=false />
      </behavior>
      </serviceBehaviors>
      </behaviors>
      <serviceHostingEnvironment aspNetCompatibilityEnabled=true
      multipleSiteBindingsEnabled=true />
      </system.serviceModel>
      -->

      Muito obrigado!
    • By Leon Martin
      Boa tarde pessoal, preciso de uma ajuda urgente. Vcs tem alguma ideia de como eu faço esse programa? 
       
      Enunciado:
      Na teoria dos sistemas define-se o elemento MINMAX de uma matriz como sendo o maior elemento da linha onde se encontra o menor elemento da matriz. Faça um programa que carregue uma matriz 4 x 7 com números reais, calcule e mostre seu MINMAX e sua posição (linha e coluna).
       
      Exemplo: int MAT[4][7]
      Min elemento da matriz esta na MAT[1][3] = -19 (Linha Posição 1; Coluna Posição 3)
      Max elemento da linha onde esta o min elemento da matriz esta na MAT[1][5] = 101 (Linha Posição 1; Coluna Posição 5)
       
        0
      1
      2
      3
      4
      5
      6
      0
      3
      33
      9
      2
      15
      3
      22
      1
      5
      4
      76
      -19
      93
      101
      32
      2
      3
      -1
      43
      1
      554
      21
      53
      3
      55
      34
      1231
      212
      664
      234
      13413
       
    • By guiarodrigues1
      Alguém poderia me ajudar em como colocar calculo de dilatação linear / superficial / volumétrica e de sólidos no DevC?
      Não estou conseguindo sair do lugar.
       
      Caso alguém queira mais informações segue em anexo link para baixar.
      Grato.
      Baixar PDF.
    • By Neto Dinizz
      Olá Neto Nível: InicianteMINHA CONTA Perfil Minha Assinatura Meus Cursos Favoritos Logout  Indique um amigo Mostrar menu WebAPI CRUD .NET
      11/06/2019
      1
      Entity Framework.NETASP.NET Web APIC#CRUD
      Boa noite,

      Tenho uma aplicação webapi c# utilizando entity framework CRUD, utilizando o models para montar meu json, como no models só trago os campos que vem da tabela, Tenho dúvida em como receber um parâmetro que não existe na minha tabela via parâmetro ex:

      Localhost/api/clientes?id=2&idcat=4&nome=teste

      Onde (nome) seria um parâmetro que não tenho em minha tabela, porém se existir os 2 primeiros parâmetros irei fazer um POST na tabela.

      Muito obrigado
    • By Neto Dinizz
      Bom dia,

      Poderiam me dar uma ajuda por favor,

      Estou com uma dúvida, tenho um método GET que espera o id do cliente pela url http://localhost/api/cliente/(codigo_cliente)
      estou com um problema para acessar um cliente pelo id, através de um select, gostaria de receber o id e fazer um select no banco trazendo os dados do cliente, poderiam me ajudar a incrementar o códido abaixo por favor, segue meu GET:

      // GET: api/Cliente/5
      [ResponseType(typeof(Cliente))]
      public IHttpActionResult GetCliente(int id)
      {
      Cliente cliente = db.Clientes.Find(id);
      if (cliente == null)
      {
      return NotFound();
      }

      return Ok(cliente);
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.