Ir para conteúdo
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta explicar melhor!

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual erro esta gerando ?

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Jonathacsantos
      Boa tarde, sou novo na programação, comecei por conta própria e agora estou com um pequeno problema, meu programa depende de uma pasta criada pra executar um .exe que fica dentro de uma outra pasta, sendo que eu preciso que ele leia o .exe independente de onde ele fica instalado, vou mostrar uma parte do código para tentar explicar 
      private void AcessRemo_Click(object sender, EventArgs e) { foreach ( var process in Process.GetProcessesByName("TeamViewer")) { process.Kill(); } Process.Start("C:\\Teste\\suporteremoto.exe"); ele fecha um teamviewer em execução e executa uma versão especifica do teamviewer, sendo que nos meus testes funciona pq eu tenho essa pasta ai chamada teste, mas o programa instala em Program Files, sendo que se for 64, ele vai pra Program Files (x86), dai gostaria de fazer ele ler, tipo um [LocalPath] , mas não sei como , se alguem puder me ajudar ou me da uma luz eu agradeço muito.
    • Por lucasrodrigues
      Estou com esse problema ao tentar vincular uma tabela do MySql a um DataSet. Utilizo o MySqlConnector 8.0.13, MySql-For-VisualStudio 1.2.8.

    • Por jtc-carr
      Linguagem c
      Queria a partir de um ficheiro fazer varias somas do seu conteúdo por exemplo de caracteres especiais, vogais, letra "a" , números, De forma a que devolve-se por exemplo 5 linhas, 4 caracteres especiais, 7 vogais, 9 "a", 6 numeros, num total de 40 caracteres, para os numeros fiz um if, para a função mas não funciona como devia
      while( (texto[MAX]=fgetc(textos))!= EOF ) if(texto[MAX] == '\n') linha++; printf("Existem %d linhas no arquivo\n", linha); if (i == '0' || i == '1' || i == 2' || i == '3' || i == '4' || i == '5' || i == 6' || i == '7' || i == '8'|| i == '9' ) Ajuda seria bem vinda, que queria perceber bem isto
    • Por Wil_sf
      Olá pessoal. Estou desenvolvendo um pequeno site de vendas(apenas para aprendizagem, nada comercial) e me deparei com uma dúvida que está tirando meu sono kkk
      Fiz um esquema para que os produtos posam ser cadastrados e apareçam em uma pagina para a exibição, porém gostaria que quando o cliente clicasse na foto do produto seria aberta uma pagina com as descrições e detalhes do produto(da mesma forma que o Mercado Livre ou outro site de E-commerce).
       
      <table cellpadding="8" cellspacing="5" border="0" width="100%">
              <tr>
                <?php

                  $loopH = 3;
                  $sql = "SELECT id, produto, preco, descricao, foto FROM postagem";
                  $dados=mysqli_query($con, $sql);
                  $linha = mysqli_fetch_assoc($dados);
                  $total = mysqli_num_rows($dados);
                  $x = 1;
       
                  if($total > 0){
                    while($linha = mysqli_fetch_assoc($dados)){
                      if($x < $loopH){
                      $linha = $id[4];
                    $x++;
                ?>
       
                <td align="center" varign="top">
                  <a href="descricao_L.php"><img src="_imagens-posts/<?php echo $linha['foto']; ?>" width="365px" height="365px">
                  <h3> <?php echo $linha['produto'] ?> </h3>
                  <h4>R$: <?php echo $linha['preco'] ?></h4>
                  </a>
                </td>
              <?php }elseif($x = $loopH){
              ?>

                <td align="center" varign="top">
                  <a href="descricao_L.php?perfil=$id"><img src="_imagens-posts/<?php echo $linha['foto']; ?>" width="365px" height="365px">
                  <h3> <?php echo $linha['produto'] ?> </h3>
                  <h4>R$: <?php echo $linha['preco'] ?></h4>
                  </a>
                </td>
              </tr>
              <tr>
              <?php $i = 0 ?>
              <?php }}} ?>
              </tr>
            </table>
       
      este é a tabela onde os produtos são exibidos(e apesar do código estar horrível essa parte está funcionando perfeitamente haha). bom, gostaria que alguém me desse uma luz, não sei o que devo fazer.
       
      Desde já, obrigado a todos do fórum.
    • Por Maicon Santos
      Foi me passada a tarefa de fazer um sistema onde o usuário (funcionário 1) (Funcionário da empresa X) irá fazer um cadastro com suas informações, após esse cadastro essas informações serão avaliadas por outro funcionário (funcionário 2) da empresa X que fica responsável apenas por verificar as informações desse usuário e dar permissões a ele. Até então é um sistema simples de cadastro.
      Após o funcionário 1 fazer o cadastro o funcionário 2 avaliará essas informações para ver se esse usuário pode ter acesso a conta bancária da empresa. (Pera! Como assim?) Exatamente isso, o usuário vai se cadastrar e se ele for apto a acessar a conta bancária da empresa o sistema terá que fazer o login na conta bancária da empresa, ou seja o sistema deve apenas verificar os dados do funcionário 1, se ele for apto abrir a conta da empresa o sistema terá que passar os dados pelo internet banking do Santander.
       
      Um outro exemplo que talvez facilite entender:
      Os funcionários 1, 2 e 3 trabalham juntos gerenciando as finanças da empresa, então todos eles precisam acessar a conta bancaria da empresa, mas o gerente para não ter que passar o login e senha para eles quer que o sistema faça esse login, sem que os funcionários saibam esses devidos dados, então os funcionários farão um cadastro no sistema e após fazer o login no mesmo eles automaticamente fazem o login na conta do Santander da empresa
       
      Basicamente isso, minhas dúvidas até o momento:
      Isso é realmente possível? Fazer o login no internet banking, que tem a função de ser muito seguro, através de um outro sistema
      Eu tenho a disponibilidade para escolher entre fazer um sistema desktop (usando C#, que eu tenho mais domínio) ou fazer um sistema WEB (que eu não possuo tanto domínio assim das linguagens), para fazer esse tipo de trabalho, o que seria mais indicado?
      Quais dicas vocês podem me dar para essa tarefa? Eu trabalho na área de desenvolvimento a pouco tempo, por isso não tenho muito conhecimento de sistemas desse nível, qualquer direção será de grande ajuda.
      Grato!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.