Ir para conteúdo
  • Cadastre-se

dev botao

Ler TXT de resposta ao consultar cadastro


  • Este tópico foi criado há 3064 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá amigos, 

Bom dia!

Sou novo por aqui e gostaria de saber se estou no caminho certo.

Trabalho com o MS visual Studio, C#.

Ao utilizar a NFe.ConsultaCadastro() estou criando o TXT com o camando na pasta monitorada e lendo o TXT de retorno, utilizando o código abaixo:

No código leio todas as linhas do TXT de retorno e pego separadamente as informações de antes e depois do sinal de "="

        public static string[,] Envia_Comando_Acbr(string sComando)
        {
            string[,] sRet = new string[2,35];
            string sNomeArquivo = @"C:\Methodus\Cupom\Monitor\Envio\ENT.TXT";
            string sNomeArquivoRet = @"C:\Methodus\Cupom\Monitor\Retorno\ENT-resp.TXT";
            string sAux;

            bool sLocalizado = false;

            #region Envia Comando
            try
            {
                using (StreamWriter writer = new StreamWriter(sNomeArquivo))
                {
                    writer.Write(sComando);//Cria TXT com a string de comando recebida em sComando
                }
            }
            catch (Exception ex)//Se acontece erro na criação do TXT
            {
                sRet[0,0] = "ERRO:";
                sRet[1,0] = ex.Message;
                return sRet;
            }
            #endregion

            #region Retorno
            //Faz loop enquanto não encontra arquivo de retorno
            do
            {
                //Se não encontra retorno aguarda um instante para sua criação e liberação
                System.Threading.Thread.Sleep(1000);

                if (File.Exists(sNomeArquivoRet))//Arquivo encontrado
                {
                    try
                    {
                        StreamReader sr = new StreamReader(sNomeArquivoRet);
                        using (sr)
                        {
                            int Y = 0;
                            while ((sAux = sr.ReadLine()) != null)//Lê todas as linhas até o final do arquivo
                            {
                                int i = sAux.IndexOf(':');//Pega posição do caractere ":"
                                int itam = sAux.Length - (i + 1);

                                if (i > 0)//Se encontra caractere ":"
                                {
                                    sRet[0,Y] = sAux.Substring(0, i);//Carrega lado esquerdo do caractere ":"
                                    sRet[1,Y] = sAux.Substring(i + 1, itam);//Carrega Lado dirito do caractere ";"

                                }

                                int z = sAux.IndexOf('=');//Pega posição do caractere "="
                                int ztam = sAux.Length - (z + 1);
                                if (z > 0)//Se encontra caractere "="
                                {
                                    sRet[0,Y] = sAux.Substring(0, z);//Carrega lado esquerdo do caractere ":"
                                    sRet[1,Y] = sAux.Substring(z + 1, ztam);//Carrega Lado dirito do caractere ";"

                                }
                                Y += 1;
                            }

                        }
                        sLocalizado = true;//Marca como verdadeiro que arquivo retorno foi localizado
                        sr.Close();
                        File.Delete(sNomeArquivoRet);//Deleta arquikvo de retorno
                    }
                    catch (Exception ex)//Em caso de erro na leitura do retorno
                    {
                        sRet[0,0] = "ERRO:";
                        sRet[1,0] = ex.Message;
                    }
                }
            } while (sLocalizado == false);
            #endregion

            return sRet;//retorna string com todas as linhas
        }

É pra funcionar assim mesmo, ou tem um jeito mais fácil de fazer?

Deixei passar alguma coisa no tratamento dos retornos?

Obrigado pela ajuda.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Notou que na pasta de instalação (completa), há uma pasta "Exemplos" ?... e dentre eles, há alguns exemplos em C#...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3064 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...