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 Eduardo.10
      Gostaria de ajuda para resolver uns exercícios dessa matéria obrigatória para o curso de engenharia que estou com dificuldades
       
       
      Utiliza o comando switch-case
      Quando a questão conter um programa a ser criado e resolvido com o algoritmo, a resolução deve conter as etapas para a construção da lógica:   diagrama de blocos(minimamente) e codificação em C ( que deve ser testada no compilador). Pergunta:
      1) Considere as estações do ano prevalentes para cada mês na europa:
      Janeiro (1): Inverno
      Fevereiro (2): Inverno
      Março (3): Inverno
      Abril (4): Primavera
      Maio (5): Primavera
      Junho (6): Primavera
      Julho (7): Verão
      Agosto (8): Verão
      Setembro (9): Verão
      Outubro (10): Outono
      Novembro (11): Outono
      Dezembro (12): Outono

      Escreva um programa que solicita ao usuário que forneça o número do mês de seu aniversário e imprima:

      “Você nasceu na Primavera” ou
      “Você nasceu no Verão” ou
      “Você nasceu no Outono” ou
      “Você nasceu no Inverno”

      conforme for o caso.
       
       
       
      Resolução em fluxograma e codificação em linguagem C).
      2) Escreva um programa que imprima todos os inteiros no intervalo [10, 20], em ordem crescente.
      3)  Escreva um programa que imprima todos os inteiros no intervalo [10, 20], em ordem decrescente.
      4) Fazer um programa que calcule e escreva o valor de S: S = 1/1 + 3/2 + 5/3 + 7/4+...+99/50

      5) Fazer um programa que calcule e escreva a seguinte soma: S = 21/20 + 22/19 + 23/18 +...+ 220/1. Use a função pow (não se esqueça do #include<math.h>).

      6) Fazer um programa que calcule e escreva o valor de S onde:
      S = 1/1 – 2/4 + 3/9 – 4/16 + 5/25 – 6/36 ... –10/100
       
      Se puderem me ajudar, por favor?
    • By sudden
      Olá alguém que esteja lendo isso, tem dias que eu não consigo rodar esse algoritmo certo, não sei mais o que eu faço, nao sou nenhum desenvolvedor nem nada, tô no 1 semestre
      #include <stdio.h> #include <stdlib.h> //Inicio Structs struct telefones{ char numfixo[15]; char celular[16]; }; struct clientes{ double cpf; int codcliente; struct telefones t; char nome[30]; char sexo; }; struct produtos{ char nomeprod[20]; int codigoproduto; float valor; char modelo [10]; }; struct carrinhos{ struct clientes cliente[5]; struct produtos produto[5]; int quantidade; float subtotal; float desconto; // porcentagem float total; }; struct modelos{ char marca [20]; char modelo [20]; }; /////Fim Structs //Inicio Fun��o void cadastrarCliente(struct clientes cliente[50], int cont); void mostrarCliente(struct clientes cliente[50]); void mostraMenuPrincipal(); void mostrarProduto(struct produtos produto[50]); void cadastrarProduto(struct produtos produto[50],int contp); void efetuarCompra(struct carrinhos carrinho[50],struct clientes cliente[3],struct produtos produto[10]); void ordenarCliente(struct clientes cliente[50]); // Inicio Main void main(int argc, char *argv[]) { int resposta,contp=0,cont=0,voltar=0; //cont e o contador do cliente, contp e do produto. struct produtos produto[50]; struct clientes cliente[50]; struct carrinhos carrinho[50]; struct modelos modelo[50]; ////////////inicio declarando structs para ele ter oque mostrar//////////////////////////////////// ///////////////////Ira direcionar o usuario no menu /////////////////////// do{ mostraMenuPrincipal(); scanf("%d", &resposta); switch(resposta) { case 1: cadastrarCliente(cliente, cont); cont=cont+1; //agora a proxima vez que for cadastrar um cliente, o indice vai ser um apos o anterior. system("pause"); break; case 2: cadastrarProduto(produto,contp); contp=contp+1; system("pause"); break; case 3: mostrarCliente(cliente); system("pause"); break; case 4: mostrarProduto(produto); system("pause"); break; case 5: efetuarCompra(carrinho,cliente,produto); system("pause"); break; case 6: ordenarCliente(cliente); contp=contp+1; break; default: exit(0); } }while(1); } ////////////////////////print menu /////////////////////////////////////////// void mostraMenuPrincipal(){ system("cls"); printf("==========================================================\n"); printf("1 - CADASTRAR CLIENTE\n"); printf("2 - CADASTRAR PRODUTO\n"); printf("3 - LISTA DE CLIENTES\n"); printf("4 - LISTA DE PRODUTOS\n"); printf("5 - EFETUAR VENDA\n"); printf("0 - SAIR DO MERCADO DIGITAL\n"); printf("==========================================================\n"); printf("Digite sua opcao: "); } ////////////////////////print cadastrar cliente /////////////////////////////////////////// void cadastrarCliente(struct clientes cliente[50],int cont){ system("cls"); printf("=======================================================\n"); printf("-----------------CADASTRAR CLIENTE: %d-----------------\n", cont+1); printf("=======================================================\n\n\n"); printf("AVISO! Digite o CPF da forma original com ponto e tra�os\n\n"); printf("CPF: "); fflush(stdin); //limpa o buffer scanf("%f",&cliente[cont].cpf); printf("NUM FIXO: "); fflush(stdin); scanf("%d", &cliente[cont].t.numfixo); printf("CELULAR: "); fflush(stdin); scanf("%d", &cliente[cont].t.celular); printf("NOME: "); fflush(stdin); gets(cliente[cont].nome); printf("DATA NASCIMENTO: "); fflush(stdin); cliente[cont].codcliente=cliente[cont].cpf/100000; printf("\n==========================================================\n"); printf("O CODIGO DO CLIENTE GERADO E: %d",&cliente[cont].codcliente); printf("\n"); //Printa o cliente que foi cadastrado printf("\nCPF: %d",cliente[cont].cpf); printf("\nNUM FIXO: %d",cliente[cont].t.numfixo); printf("\nCELULAR: %d",cliente[cont].t.celular); printf("\nNOME: %s",cliente[cont].nome); printf("\n=================================================\n"); } ////////////////////////print listar cliente /////////////////////////////////////////// void mostrarCliente(struct clientes cliente[50]){ int repet=0; printf("================================================\n"); printf("----------------- LISTAR CLIENTE -----------------\n"); printf("================================================\n"); for(repet=0;repet<=2;repet++){ printf("\nCPF: %d",cliente[repet].cpf); printf("\nNUM FIXO: %d",cliente[repet].t.numfixo); printf("\nCELULAR: %d",cliente[repet].t.celular); printf("\nNOME: %s",cliente[repet].nome); printf("\nCODIGO DO CLIENTE: %d\n",cliente[repet].codcliente); } } ////////////////////////print cadastrar produto /////////////////////////////////////////// void cadastrarProduto(struct produtos produto[50],int contp){ printf("=================================================\n"); printf("-----------------CADASTRAR PRODUTO: %d-----------------\n", contp+1); printf("=================================================\n"); printf("CODIGO DO PRODUTO: \n"); scanf("%d",&produto[contp].codigoproduto); printf("\nNOME DO PRODUTO: "); fflush(stdin); gets(produto[contp].nomeprod); printf("\nMARCA: "); (stdin); printf("\nMODELO: "); fflush(stdin); printf("\nVALOR: "); fflush(stdin); scanf("%f",&produto[contp].valor); //agora printar produto printf("\nCODIGO DO PRODUTO: %d\n",produto[contp].codigoproduto); printf("\nNOME DO PRODUTO: %ss\n",produto[contp].nomeprod); printf("\nVALOR DO PRODUTO: R$ %0.2f\n",produto[contp].valor); printf("\nMODELO DO PRODUTO: %s", produto[contp].modelo); } ////////////////////////print listar produtos /////////////////////////////////////////// void mostrarProduto(struct produtos produto[50]){ int repet; printf("================================================\n"); printf("----------------- LISTAR PRODUTO -----------------\n"); printf("================================================\n"); for(repet=0;repet<=9;repet++){ printf("\n\nCODIGO DO PRODUTO: %d",produto[repet].codigoproduto); printf("\nNOME DO PRODUTO: %s",produto[repet].nomeprod);543; printf("\nVALOR DO PRODUTO: R$ %0.2f\n\n",produto[repet].valor); } } //pode ser de haja erro na compra void efetuarCompra(struct carrinhos carrinho[50],struct clientes cliente[3],struct produtos produto[10]){ int buscacliente,x; int buscaprod,buscaprod2,buscaprod3; int quantidade,quantidade2,quantidade3; float total,total2,total3; float totalum,todototal,cupom,desc; float fimtotal; mostrarCliente(cliente); printf("\n\nDigite o codigo do cliente: "); scanf("%d",&buscacliente); for(x=0;x<=50;x++){ int y; if(cliente[x].codcliente==buscacliente){ y=1; } if(y==1){ buscacliente=x; y=51; } } system("cls"); mostrarProduto(produto); printf("\ncarrinho do cliente %s",cliente[buscacliente].nome); printf("\ndigite o codigo do produto 1: "); scanf("%d",&buscaprod); for(x=0;x<=50;x++){ int y; if(produto[x].codigoproduto==buscaprod){ y=1; } if(y==1){ buscaprod=x; y=51; } } printf("\ndigite a quantidade: "); scanf("%d",&quantidade); total = quantidade * produto[buscaprod].valor; //REPETICAO///////////////////// printf("\ndigite o codigo do produto 2: "); scanf("%d",&buscaprod); for(x=0;x<=50;x++){ int y; if(produto[x].codigoproduto==buscaprod){ y=1; } if(y==1){ buscaprod=x; y=51; } } printf("\ndigite a quantidade: "); scanf("%d",&quantidade); total2 = quantidade * produto[buscaprod].valor; //REPETICAO///////////////////// printf("\ndigite o codigo do produto 3: "); scanf("%d",&buscaprod); for(x=0;x<=50;x++){ int y; if(produto[x].codigoproduto==buscaprod){ y=1; } if(y==1){ buscaprod=x; y=51; } } printf("\ndigite a quantidade: "); scanf("%d",&quantidade); total3 = quantidade * produto[buscaprod].valor; //system("pause"); printf("digite o cupom de desconto: "); scanf("%f", &cupom); todototal = total + total2 + total3; desc = todototal * (cupom / 100); fimtotal = todototal - desc; printf("Total: R$ %0.2f\n", todototal); printf("Valor do Desconto: R$ %0.2f\n", desc); printf("Valor total e R$ %0.2f\n", fimtotal); system("pause"); } void ordenarCliente(struct clientes cliente[50]){ int i,b; int codigotemp,cpftemp,fixotemp,celulartemp,datanasctemp; char nometemp; printf("Organizando lista...\n"); for(i=0;i<=3;i++){ for(b=0;b<=3;b++){ if(cliente[b].codcliente>cliente[b+1].codcliente){ //valores para variaveis temporarias printf("transferindo valores para variaveis temporarias...\n"); codigotemp=cliente[b].codcliente; fixotemp=cliente[b].t.numfixo; celulartemp=cliente[b].t.celular; //strcpy(nometemp , cliente[b].nome); nometemp=cliente[b].nome; cpftemp=cliente[b].cpf; printf("variaveis temporarias transferidas.\n"); //fim da transferencia de valores para variaveis temporarias //fazer os valores de indice b receber o valor do indice da struct do indice seguinte printf("cliente %d recebendo valores do cliente... %d\n",b,b+1); cliente[b].codcliente=cliente[b+1].codcliente; strcpy(cliente[b].nome , cliente[b+1].nome); cliente[b].cpf=cliente[b+1].cpf; printf("cliente %d recebeu valores do cliente %d\n",b,b+1); //fim da transferencia de valores do segundo para o primeiro indice //inicio dE transferencia de valores do primeiro indice para o segundo indice printf("cliente %d recebendo valores das variaveis temporarias...\n",b+1); cliente[b+1].codcliente=codigotemp; printf("recebeu codigo do cliente.\n"); //cliente[b+1].nome=nometemp; strcpy(cliente[b+1].nome,nometemp); //sprintf(cliente[b+1].nome,nometemp); printf("recebeu nome\n"); cliente[b+1].cpf=cpftemp; printf("recebeu cpf\n"); printf("cliente %d recebeu valores das variaveis temporarias\n",b+1); printf("---- ---- ---- ---- "); } } } printf("Operacao concluida.\n"); }  
    • By sidius
      ei galera, minha professora pediu para que eu calculasse matrizes utilizando a linguagem c, poderiam me dar uma luz ae?? ficaria grato, tenho grande dificuldade no assunto

    • By Anderson Modolon
      Necessito saber como criar um sistema em C# aonde o banco de dados seja compartilhado, ou seja, em locais físicos diferentes como por exemplo cidades diferentes. Talvez existam várias alternativas para isso, mas necessito saber ao menos uma.

      Gostaria de indicações de arquiteturas, padrões ou formas para a criação do mesmo.
×

Important Information

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