Função 'Quit' ao executar faz o .exe para de funcionar.

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por Kapiaba »

Mister Quintas, escreveu:

Já pensei várias vezes em testar fivewin, mas não poder usar o Harbour 3.4 não dá.
Porquê não é possível usar o Harbour 3.4? Talvez não sirva para versões velhas do FiveWin.
E qual o problema de usar o Harbour 3.2? Estou usando atualmente, e estou gostando da robustez dele. Pega erros, que o xHarbour "deixa" passar na escrita do FiveWin. Lógico que o Harbour ou xHarbour das versões antigas, não servem para as versões atuais do FiveWin.

Onde baixo uma versão desse Hrbour 3.4 para FiveWin, ou não existe? Se não existe, boa coisa não é, ou é ruim da kbça, ou doente do pé. kkkkkkkkkkkkkkkkkkkkk

No ano passado, que estava no pique, cheguei a postar no fórum do fivewin se poderia colocar a versão free com exemplos no github, mas não obtive resposta.
Nao vejo nenhum problema nisso já que a versão 6.12, é free. Aliás, tenho a versão 2.7 que é mais antiga e funciona perfeita, o Linares me autorizou a passar para quem quiser aprender a usar o fivewin. Vantagem, é que eue tenho tudo completo. Se quiser, eu disponibilizo para o senhor, completo.
Nem sei se essa versão 6.12, ainda serve pra alguma coisa, acho que de 2005. -> Junho de 2012.
O senhor consegue desenvolver qualquer sistema com ela. Só não tem algumas modernidades da atualidade. Usamos até hoje o FWH27 - Fev. 2007, e não "nega" fogo, só não tem os mimimis da atualidade, que na prática, não faz falta nenhuma. E depois que se pega a malandragem, compra-se a mais nova.
Hoje em dia, depois de anos de apito nos ouvidos sem parar, sem muito pique pra nenhuma, nem manual, nem #includes, nem porr. nenhuma.
Nao entendi essa parte. Explique melhor, porfa.

P.S.: Mister Quintas, eu garanto uma coisa: Se o senhor não aprender a programar em FIVEWIN, tendo ao lado o MAIOR FIVEWINNER do MUNDO, eu deixo de programar em FiveWin e volto para o modo console. kkkkkkkkkkkkkkkkkkkkkkkkkkkkk, broma, broma, brincadira, brincadeira. jajajajajajajajaja.

Mister Quintas o senhor tem skype? Se sim, envie-me no kapiabafwh arroba gmail.com

I LOVE FIVEWIN THE BEST!

Obg. abs.

Regards, saludos.
João Eduardo
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 28 Jul 2021 18:25
Localização: Paracatu/MG

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por João Eduardo »

Boa tarde pessoal, foram muitos os questionamentos, mas vou tentar responder todos em um só, para melhor posicionamento a respeito do problema.

Obs: Apenas para ter um posicionamento mais exato, irei descrever a aplicação em questão que dá este erro, aqui na empresa temos um executável com várias funcionalidades, dentre elas, uma função de exportação das alterações no banco de dados para a filial daquela empresa (servidor manda para um banco nas nuvens as tabelas selecionadas e baixa na filial, permitindo assim trabalhar fora do âmbito da empresa) oque acontece é que o executável em segundo plano que é responsável por esse upload/download, é aberto e fechado de tempos em tempos e na hora de fechar, apresenta esse erro, impedindo de fechar automaticamente e travando o processo, contudo a aplicação principal não ocorre o mesmo erro, mesmo usando a mesma função "Finalizar()".
Sugiro que comente todas estas outras funções, compile e execute. Creio que vá funcionar. Depois vá removendo o comentário, um a um, das funções anteriormente comentadas. Compile e execute. Se passar, repita o processo. Senão, verifique a função onde ocorreu o erro.
* Eu fiz desta forma anteriormente, contudo esqueci de escrever acima, o travamento ocorre no "DbCloseAll()", caso eu comente ele, ocorre no "oVentPrinc:End()" e caso eu comente este termo novamente, o travamento vai ao "Quit", ai chegando nesse ponto fiquei sem saber como tratar.
Mas sem ver que funções são essas que vc chama não posso responder com maior precisão.
Sr_End() ? FecBloAce()?
*A Sr_End, pelo que verifiquei é uma função de uma lib do MySql (REQUEST SR_MYSQL), cuja função é finalizar todas as conexões abertas, a fim de testes, eu comentei essa função e o erro persistia, e a função FecBloAce() é uma de uso interno do sistema ao qual trabalho, a única coisa que ela faz é alterar o valor de uma variável global que será usada futuramente.
{João Eduardo[/b], faça um trace:
*Rochinha, conforme constatei no primeiro tópico, inicialmente ele trava na função finalizar, no momento que é passado no "DbCloseAll()"
Quando diz windows server, isso significa via terminal service ou direto nele?
*Eu conecto remotamente (na mesma rede e usando o aplicativo de 'Conexão de Área de Trabalho Remota') na máquina do Windows Server e rodo a aplicação por lá mesmo.
MsgRun( "FECHANDO O PROGRAMA E BANCOS DE DADOS.", ;
120 "Por Favor, Espere! Vou Desligar. ", ;
121 { || WinExec( LIBERA_TUDO() ), 3 } )
* Kapiaba, eu testei com essa forma e funciona, contudo, o chefe que é responsável por revisar meu código insiste para que eu ache o problema antes de tentar consertá-lo, para ter conhecimento do problema e saber como trata-lo futuramente.
kapiaba acho que só basta trocar Quit por PostQuitMessage(0) se esta função for nativa do Harbour.
* Testarei com o "PostQuitMessage(0)", contudo, o erro ocorre antes de sua chamada.

Agradeço a atenção de todos!
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por Jairo Maia »

João Eduardo escreveu:mas o grande porém é que este erro ocorre apenas na versão do windows server (no caso a de 2012), nos demais windows, é finalizado sem o menor problema
Já verificou se as versões do Microsoft Visual C++ e do .NET Framework nesse computador estão atualizadas? Caso não estejam, atualize e veja se resolve.

PS: Não desisntale versões antigas também, pode ser que outros programas tenham dependeências de LIBs de versões antigas, e poderia causar problemas.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por JoséQuintas »

Isso me lembrou aquele erro de CLOSE quando tem SET FILTER.....
Não sei se pode ter a ver, e não conseguir ver a mensagem de erro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
João Eduardo
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 28 Jul 2021 18:25
Localização: Paracatu/MG

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por João Eduardo »

Novas pessoal, aparentemente o erro ocorre nos demais Windows também! a equipe de teste recebeu reclamações hoje em outras plataformas do Windows (o 7 e o 10), apenas questionando, já que o problema não se resume mais em uma versão específica (mesmo após ser testado em no mínimo 5 máquinas diferentes).
Já verificou se as versões do Microsoft Visual C++ e do .NET Framework nesse computador estão atualizadas? Caso não estejam, atualize e veja se resolve.
* Verifiquei e instalei as versões mais recentes agora mesmo, contudo o erro persiste.
Isso me lembrou aquele erro de CLOSE quando tem SET FILTER.....
Não sei se pode ter a ver, e não conseguir ver a mensagem de erro.
*Há algum chamado deste erro aqui no Fórum? as vezes pode ser parecido, e no meu caso, não apresenta mensagem, o executável simplesmente "para de funcionar" sem erro de log nem nada do tipo.

Os manterei atualizados caso eu descubra algo que possa induzir a este problema...
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por Kapiaba »

* Kapiaba, eu testei com essa forma e funciona, contudo, o chefe que é responsável por revisar meu código insiste para que eu ache o problema antes de tentar consertá-lo, para ter conhecimento do problema e saber como trata-lo futuramente.
Entendi. Você está aprendendo FiveWin ainda, é isso? Simples então, do modo que o Rochinhas falou(como se fosse um Debug), você descobrirá o problema, mesmo já tendo a solução que eu já dei. Outra, verifique se você tem WHILE... ENDDO, sem o respectivo: SYSREFRESH()? Outra, mostrei os comandos que pertencem ao FIVEWIN 16 bits, que não são suportados pelo FIVEWIN de 32/64 bits, se tive mais dúvidas, vá perguntado. Estamos aqui para ajudar.

P.s.: Qual é a versão do seu FiveWin?

Abs.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por rochinha »

Amiguinhos,

Deve ser um caso claro de área de trabalho com tabela travando por não descarregamento da memória, mas o comando quit deveria fechar.

Joáo Eduardo mantenha o trecho como anteriormente sem modificar, apenas coloque antes do dbCloseAll() a chamada dbCommitAll()
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por Kapiaba »

Mestre Rochinhas, desculpe, mas não concordo com o senhor, dbCommitAll(), apenas "força" o windows a gravar os dados no banco de dados, para ele não perder os dados. O problema dele, é erros de lógica e comandos errados mesmo, nada mais, nada além. Erros de principiante que eu já fiquei careca de tanto passar, até aprender que focinho de porco, não é tomada. Lógica boa, programa bom, lógica ruim, é só me chamar. kkkkkkkkkkkkkkkkk

Abraços meu rei.

Regards, saludos.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por rochinha »

Amiguinhos,
Mestre Rochinhas, desculpe, mas não concordo com o senhor, dbCommitAll(), apenas "força" o windows a gravar os dados no banco de dados, para ele não perder os dados. O problema dele, é erros de lógica e comandos errados mesmo, nada mais, nada além. Erros de principiante que eu já fiquei careca de tanto passar, até aprender que focinho de porco, não é tomada. Lógica boa, programa bom, lógica ruim, é só me chamar. kkkkkkkkkkkkkkkkk
Kapiaba, eu também raramente uso dbCommitAll(), mas uso. Este tipo de travamento com certeza pode estar relacionado a uma área selecionada com tabela aberta e laço infinito.

Não custa nada tentar.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por Kapiaba »

Kapiaba, eu também raramente uso dbCommitAll(), mas uso. Este tipo de travamento com certeza pode estar relacionado a uma área selecionada com tabela aberta e laço infinito.
É só usar o COMMIT ao final do REPLACE e se for um LAÇO(looping), usar o SYSREFRESH() e não dar o COMMIT dentro do LAÇO e sim, sempre fora dele e refrescar a memória. No mais, é somente erro de lógica, nada mais, nada além. Mas, nada impede de usar o dbCommitAll() ao sair do programa, se bem que o DBCLOSEALL() já "forçará" o windows a dar os REPLACES e fechar os bancos. Abs.

Regards, saludos.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por Jairo Maia »

João Eduardo escreveu:Há algum chamado deste erro aqui no Fórum? as vezes pode ser parecido
Tem um tópico sobre erro ao usar o Quit, porém, era um RunTime Error que ocorria ao usar o Quit quando tinha arquivos com relacionamento. A solução do pessoal do fórum foi auxiliar a fechar os relacionamentos antes de usar o Quit, e o problema foi solucionado. Se quiser ver, o tópico é esse: Erro no CLOSE DATA quando tem relacionamento
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por JoséQuintas »

O erro acontece SEMPRE, ou só de vez em quando?
Se acontece sempre, TALVEZ acompanhar pelo debug, linha a linha.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por rochinha »

Amiguinhos,
...se for um LAÇO(looping), usar o SYSREFRESH()...
Se a rotina estiver presa dentro de um laço dificilmente qualquer comando fora dela podera acontecer ainda mais se uma função for chamada por recursividade.

Para descobrir é como foi falado, traçar a rota por debug. Se o debug não puder ser ativado o trace terá de ser feito como falei inclusive dentro de alguma função chamada.

Já passei por isto e como tinha terminado o cabelo da cabeça e barba tiver de arrancar cabelos de outros lugares, mas encontrei o cachorrinho fd...

Até hoje não me recuperei do trauma de esquecer um teco de código que deveria estar desabilitado.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
João Eduardo
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 28 Jul 2021 18:25
Localização: Paracatu/MG

Função 'Quit' ao executar faz o .exe para de funcionar.

Mensagem por João Eduardo »

Boa tarde pessoal, agradeço a atenção de todos pois descobri o problema! na aplicação em específico que retornava o erro, ela atua com 2 conexões no banco MySql através de uma extensão do SqlRdd, uma conexão local e outra com o banco das "nuvens", migrando entre cada uma conforme o processo da aplicação era feito, o problema era que uma tabela tinha sido aberta em uma definida conexão e não estava sendo fechada logo após seu uso, o sistema então mudava para a outra conexão e deixava ela como "ativa" ou seja, a que seria usada no momento, e logo após tentava finalizar todas as tabelas mandando o DbCloseAll, resultando no erro em tentar fechar com uma tabela aberta em outra conexão (ao menos acredito que seja isso).

Obs: agradeço as dicas de todos, pois se n fossem elas estaria quebrando a cabeça ainda. gratidão apenas!
Responder