Ir para conteúdo
  • Cadastre-se

tiagok

Membros
  • Total de ítens

    13
  • Registro em

  • Última visita

Community Answers

  1. tiagok's post in TACBrTEFD.Free - Travando was marked as the answer   
    Aparentemente, o problema ocorre no meu caso, porque a minha implementação das chamadas ACBR, ficam dentro de uma DLL que é carregada e utilizada pelo sistema... Talvez por ser dentro da DLL tenha alguma limitação na questão do Timer ali que não se destroi... Fiz uma aplicação de teste, com a implementação diretamente em um formulário simples, e não ocorreu o problema..  acho que só consegue simular se for por uma DLL mesmo...
    Podem fechar este tópico, eu acabei resolvendo pra mim de outra forma.. mas se quiserem testar, eu joguei abaixo alguns trechos para montagem de um exemplo:
    Exemplo:
    >>>> Criar uma DLL e exportar o método com uma implementação como esta:
    uses
      ACBrTEFD,
      ACBrTEFDClass,
      ACBrTEFDCliSiTef;
    private
        FACBrTEFD: TACBrTEFD;
        FEstadoECF: String;
      FACBrTEFD := TACBrTEFD.Create(nil);
      FACBrTEFD.TEFCliSiTef.EnderecoIP := 'localhost';
      FACBrTEFD.TEFCliSiTef.CodigoLoja := '00000000';
      FACBrTEFD.TEFCliSiTef.NumeroTerminal := 'SE000001';
      FACBrTEFD.TEFCliSiTef.PortaPinPad := 3;
      FACBrTEFD.TEFCliSiTef.NumVias := 2;
      FACBrTEFD.SuportaSaque := False;
      FACBrTEFD.SuportaDesconto := False;
      FACBrTEFD.OnExibeMsg := Sitef_ExibirMensagem;
      FACBrTEFD.OnAguardaResp := AguardaResposta;
      FACBrTEFD.OnInfoECF := InfoECF;
      FACBrTEFD.OnComandaECF := ComandaECF;
      FACBrTEFD.OnComandaECFAbreVinculado := ComandaECFAbreVinculado;
      FACBrTEFD.OnComandaECFImprimeVia := ComandaECFImprimeVia;
      FACBrTEFD.OnBloqueiaMouseTeclado := BloqueiaMouseTeclado;
      FACBrTEFD.TEFCliSiTef.OnExibeMenu := Sitef_ExibirMenu;
      FACBrTEFD.TEFCliSiTef.OnObtemCampo := Sitef_ObterCampo;
      FEstadoECF := 'V';
      FACBrTEFD.Inicializar(gpCliSiTef);
      FACBrTEFD.DesInicializar(gpCliSiTef);
      // Aqui vai ocorrer o problema (aparentemente apenas se isso tudo estiver dentro de uma DLL)
      FACBrTEFD.Free;
    ------------
    Métodos para testar assinatura:
    procedure Sitef_ExibirMensagem(Operacao: TACBrTEFDOperacaoMensagem; aMensagem: string; var AModalResult: TModalResult);
    begin
      // teste
    end;
    procedure Sitef_ExibirMenu(aTitulo: string; aOpcoes: TStringList; var aItemSelecionado: Integer; var aVoltarMenu: Boolean);
    begin
      // teste
    end;
    procedure Sitef_ObterCampo(aTitulo: string; aTamanhoMinimo, aTamanhoMaximo, aTipoCampo: Integer; aOperacao: TACBrTEFDCliSiTefOperacaoCampo; var aResposta: AnsiString; var aDigitado, aVoltarMenu: Boolean);
    begin
      // teste
    end;
    procedure ComandaECF(Operacao: TACBrTEFDOperacaoECF; Resp: TACBrTEFDResp; var RetornoECF: Integer);
    begin
      // teste
    end;
    procedure AguardaResposta(Arquivo: string; SegundosTimeOut: Integer; var Interromper: Boolean);
    begin
      // teste
    end;
    procedure ComandaECFAbreVinculado(COO, IndiceECF: string; Valor: Double; var RetornoECF: Integer);
    begin
      // teste
    end;
    procedure ComandaECFImprimeVia(TipoRelatorio: TACBrTEFDTipoRelatorio; Via: Integer; ImagemComprovante: TStringList; var RetornoECF: Integer);
    begin
      // teste
    end;
    procedure InfoECF(Operacao: TACBrTEFDInfoECF; var RetornoECF: string);
    begin
        // Simula o tempo de resposta da impressora
      Sleep(100);
      case Operacao of
        ineEstadoECF:
          begin
            RetornoECF := FEstadoECF;
          end;
        ineSubTotal:
          begin
            RetornoECF := '999999';
          end;
        ineTotalAPagar:
          begin
            RetornoECF := '0';
          end;
      end;
    end;
    procedure BloqueiaMouseTeclado(Bloqueia: Boolean; var Tratado: Boolean);
    begin
      // teste
    end;
×
×
  • 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.