Código se repete sem estar em While Do
23/07/2008
0
Estou de cabeça quente com esta situação. Na parte de finalização do caixa (aplicação) esse trecho do programa entra em loop como se estivesse usando um While Do mas não está e assim entra em loop indefinido. O mais curioso é que este módulo funciona com impressoras fiscais daruma, bematech, urano e elgin. Mas essa situação só acontece em tres clientes que usam a DARUMA. Na minha maquina tambem acontece. Nos outros clientes que usam daruma nada acontece.
Nunca vi isso ele é com se estivesse dentro do while. Veja que o código é simples onde chama uma funçao na linha :
linhaiFimDoDia = 0 Then GravaSintegra60();
Se puderem me ajudar mais uma vez agardeço
Marcos Roberto
gStringListErro.Add(´Antes de Sintegra´) ;
gStringListErro.SaveToFile(´c:\Fechamento.Txt´);
If iFimDoDia = 0 Then GravaSintegra60();
DeleteFile(gsDiretorioECF+´\Coo_Txt\Data_Mov_Dia.Txt´);
gStringListErro.Add(´Depois do Sintegra´) ;
gStringListErro.SaveToFile(´c:\Fechamento.Txt´);
//frMensagens.Visible := false ;
//frMensagens.Release ;
pnMensAviso.Visible := False ;
Marcosrodias
Posts
25/07/2008
Fabriciocolombo
exceto pelas iterações (loop, repeat, while), a outra forma de entrar em loop infinito é utilizar funções recursivas que apresentam erros.
posta o método GravaSintegra60 pra gente dar uma olhada, o problema deve estar nele.
até mais
25/07/2008
Werlon Goulart
Dê uma conferida pra ver se não está fazendo com q um evento_1 chame o evento_2 que por sua vez chama o evento_1 novamente...
É só uma ideia q me ocorreu...
Grande abraço.
04/08/2008
Marcosrodias
Quando lancaram a dll o comando da reduzão z era declado assim:
function Daruma_FI_ReducaoZ: Integer; StdCall; External ´Daruma32.dll´;
Quando inclui a ecf daruma na minha aplicação coloquei desta forma mas apos um tempo a DARUMA fez uma modifcação na dll passando dois parâmetros novos que é data e hora para ajuste na hora da ecf ficando assim :
function Daruma_FI_ReducaoZ( Data: String; Hora: String ): Integer; StdCall; External ´Daruma32.dll´;
Pois bem com a primeira declaração não dá erro algum. Ela executa tira redução Z em outra rotina mas quando volta para a rotina que foi chamada ai é que entra em loop infinito.
Depois de fazer teste todos os dias me lembrei que a dois meses atras mostrei ao suporte da daruma um erro que estava dando em uma função e a moça do suporte mandou executar novamente a função passando os parâmetros de forma diferente. No caso a função em questão tinha dois parâmetros COO inicial e COO final. Eu passava então asim 1 e 10 e executa não dava erro na função mas dava acesso violotion então ela mandou passou assim 000001 e 000010 e não deu erro na função.
Então eu resolvi olhar no help da dll da daurma as funções e vi modifação na função acima. Modifique e ai o problema resolveu. A rotina executa normalmente sem entrar em loop. Não sei como a dll estava inteferindo no código do aplicativo mas resolveu.
Um grande abraço
Marcos Roberto
Clique aqui para fazer login e interagir na Comunidade :)