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 Claudia França
      Pessoal estou com um problema para homologar um pagamento service.
       o resultado do Status deve ser sucessfull.
      Parte do codido do index.
      "

          $('#payButton').one('click', function(){
              var amount = $('input[name=amount]').val();
              var currency = $('[name=currency]').val();
              console.log(amount, currency);
              V.init( {
                  apikey: '<?php echo $visaApiKey ?>',
                  settings: {
                      //logoUrl: 'https://www.novachance.org.br/wp-content/uploads/2018/06/xLogo_INC.jpg.pagespeed.ic.QrM-Azm3n5.jpg',
                      locale: 'en_US',
                      displayName: 'Viva a Musica',
                      websiteUrl: 'https://www.vivaamusica.org.br',
                      customerSupportUrl: 'https://www.vivaamusica.org.br/contato',
                      dataLevel: 'FULL'
                  },
                  paymentRequest: {
                      currencyCode: currency,
                      total: amount,
                      merchantRequestId: 'you can send any value to API ang get it in callback',
                      orderId: 'you can send any value to API ang get it in callback',
                      description: 'any order description if needs'
                  }
              });
                V.on('payment.success', function(payment) {
                  console.log('Visa success:', JSON.stringify(payment));
                  $('#succesOverlay').show();
                  $.ajax({
                      type: 'POST',
                      url: 'mailer.php',
                      data: {json: JSON.stringify(payment)},
                      dataType: 'json',
                      success: function(data){
                        console.log('Ajax success');
                        console.log(data);
                        location = 'thanks.php';
                      },
                      error: function(jqXHR, textStatus, errorThrown) {
                        console.log('Ajax error:');
                        console.log(textStatus, errorThrown);
                      }
                  });
              });
              V.on('payment.cancel', function(payment){
                  console.log('Canceled:', payment);
              });
              V.on('payment.error', function(payment, error){
                  console.log('Visa error:', payment, error);
              });
              $('.v-button').click();
          })
       
      "
       Chamada Json
       
      "
      "Customer": {
              "Name": "[$userFullName]"
          },
          "Payment": {
              "ServiceTaxAmount": 0,
              "Installments": 1,
              "Interest": 0,
              "Capture": false,
              "Authenticate": false,
              "Recurrent": false,
              "CreditCard": {
                  "CardNumber": "453211******1521",
                  "Holder": "Gama Gama",
                  "ExpirationDate": "08/2020",
                  "SaveCard": false,
                  "Brand": "Visa"
              },
              "Tid": "0319040817883",
              "ProofOfSale": "817883",
              "AuthorizationCode": "027795",
              "Wallet": {
                  "Type": "VisaCheckout",
                  "WalletKey": "1140814777695873901",
                  "Eci": 0
                  },
              
              "SoftDescriptor": "123456789ABCD",
              "Amount": 100,
              "ReceivedDate": "2018-03-19 16:08:16",
              "Status": "eventStatus",
              "IsSplitted": false,
              "ReturnMessage": "Operation Successful",
              "ReturnCode": "4",
              "PaymentId": "e57b09eb-475b-44b6-ac71-01b9b82f2491",
              "Type": "CreditCard",
              "Currency": "BRL","en_US",
              "Country": "BRA","USA",
              
              
          
      "updateInfo":  {
               "payInfo": {
               "reason": "Pagamento","Payment",
               "avsResponseCode": "Y",
               "Amount": 91.00,
               "currencyCode": "USD",
               "eventStatus": "Success",
               "eventType": "Authorize",
               "PaymentId": "e57b09eb-475b-44b6-ac71-01b9b82f2491",
              
               }
      }
           
            }
      }
      {
       
       
      "
       
       
      O pessoal da empresa me fala que tenho que enviar o CallID gerado ( não sei como faço isso) e fazer a chamado do alteração de evento quando a transação for sucesso.
       
      Pensei em criar um aquivo payment.php mas pelo que li no manual necessariamente, não eh necessário.
       
    • 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.
×

Informação importante

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