TEF - Teste de desligar o computador

Delphi

05/08/2008

Caros colegas,

Para verificar se houve desligamento do micro durante uma transação TEF, eu crio um arquivo antes de iniciar a impressão (TEF.TXT) e, ao abrir o programa, verifico se o arquivo existe e caso positivo, mando o NCN.
O problema q estou enfrentado é q às vezes o arquivo some da pasta onde foi criado.
Se faço os testes com CTRL+ALT+DEL, sempre dá certo, mas se desligo o micro, às vezes ocorre do arquivo não estar lá, apesar de eu ter a certeza que ele foi criado.
Alguém já passou por esta situação ?
Estou trabalhando com Delphi 7 e Windows XP SP2.

Segue abaixo o trecho de código onde crio o arquivo:

      AssignFile(cArquivo, ´TEF.TXT´);
      ReWrite(cArquivo);
      WriteLn(cArquivo, ´1´);
      CloseFile(cArquivo);
      while not FileExists(´TEF.TXT´) do Sleep(1000);


Agradeço a atenção dos colegas,

Marcello.


Marcello

Marcello

Curtidas 0

Respostas

Wdrocha

Wdrocha

05/08/2008

pq vc não usa TStringList ao invés de TextFile??

É melhor e mais seguro....vc pode usar por exemplo....

cArquivo.SaveToFile(´Destino\NomeArquivo.Txt´);


Fica aew a sugestão...



Flw


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

05/08/2008

Colega,

O exemplo do help do Delphi parece-me uma opção mais adequada, veja:
[quote=´Help´]The following example shows how to tell Windows to relaunch your application when Windows starts up if it was running when the system shut down. When Windows starts up, it launches each application listed in the RunOnce key and then deletes the entry for that application. Therefore, you do not need to remove the entry written here.


procedure TForm1.WMEndSession(var Message: TWMEndSession);
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey(´\Software\Microsoft\Windows\CurrentVersion\RunOnce´, True) then
   begin
      Reg.WriteString(´MyApp´,´"´ + ParamStr(0) + ´"´);
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
    inherited;
  end;
end;



[quote=´Help´]In order for this method to be called, it must be declared in your main form class as follows:

private

  procedure WMEndSession(var Msg:TWMEndSession); message WM_ENDSESSION;



GOSTEI 0
Paulo

Paulo

05/08/2008

Marcello, só uma pergunta: O TEF já não faz isso? Sempre que há uma transação pendente, o cupom não é encerrado e a DLL do TEF não conclui a venda. Quando o micro é religado, você vao precisar encerrar o Cupom, então o TEF pergunta se deseja Continuar ou outra forma. Então é gravado um log pela própria DLL informando que houve desligamento inesperado e etc... Nós usamos o TEF da DIREÇÃO e é mais ou menos assim.


GOSTEI 0
Marcello

Marcello

05/08/2008

Aroldo,

Pelo que entendi, a minha aplicação seria reaberta automaticamente no caso de um desligamento. Certo ?
Mas como saber se houve um desligamento inesperado, e no meio de uma transação TEF ?
Eu estou criando este arquivo TEF.TXT apenas qdo estou imprimindo o documento do TEF. Na verdade o q eu preciso é saber q existe uma transação TEF pendente.

Obrigado,

Marcello.


GOSTEI 0
Marcello

Marcello

05/08/2008

Paulo,

Estou homologando para TEF discado.
Pelo q sei não pode usar DLL.
O seu é dedicado ? Ou esta DLL dispensa homologação ?

Marcello


GOSTEI 0
Paulo

Paulo

05/08/2008

Dedicado e tem que ser homologado.


GOSTEI 0
Easytef

Easytef

05/08/2008

Olá, Marcello. O componente TEasyTEFDiscado já implementa o código para todos os testes da homologação do processo de certificação TEF discado. Ele facilita e acelera muito o processo de desenvolvimento para que sua aplicação possa fazer pagamentos via cartão de débito e crédito.

O componente suporta as redes Amex, Redecard, Visanet, Hypercard e Tecban. Você encontra a versão de avaliação do EasyTEF em www.easytef.com.br

Além de vir com documentação completa e exemplo de frente de caixa utilizando o componente, ele é o único do mercado que possui versão de avaliação, ou seja, não precisa pagar pra ver como funciona.

Qualquer dúvida, basta entrar em contato conosco pelo nosso site.

Atenciosamente,

EasyTEF Team


GOSTEI 0
Seven

Seven

05/08/2008

Ola?


>> Estou homologando para TEF discado.
>> Pelo q sei não pode usar DLL.

Não entendi bem isso, como não se pode usar DLL ? quais seriam essas ? tipo, BEMAFI32.DLL ?

Tenho um sistema e seu respectivo frente de caixa, este frente de caixa temos as configurações para as principais impressoras fiscais do mercado, porém, uso DLL para todas. Acredito que a DLL mencionada acima não seja essas que usamos para enviar os comandos para as impressora, certo?

desculpe pela ignorancia, mas se alguem puder dizer,
desde ja agradeço.


GOSTEI 0
POSTAR