encerrar programa apos <n> Tempo ocioso????

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

BGEVENTS

Mensagem por Pablo César »

ANDRIL escreveu:a BGEVENTS.LIB nao tenho ela aqui, por isso disse que talvez tivesse renomeado para EVEN.LIB
Não creio que exista. Esse arquivo EVEN.LIB, segundo o Maligno, é fruto da compilação dos fontes que tem no pacote do OASIS http://www.the-oasis.net/files/general/bgev5.zip
esqueci de mencionar no exemplo a inclusão do BGEVENTS.CH
Tudo bem. por isso eu falava sobre a directiva a ser incluída. De todas formas essa sua indicação, abre novas possibilidades com o funcionamento em BACKGROUND de funções. Há algum tempo atr´s ja mencionei sobre a possibilidade de acionar tarefas ou recados conforme uma agenda, tudo feito em Clipper. Só que para isso teria que verificar a existência de determinados arquivos e proceder com alguma execução, conforme cada tarefa. Ja pensou, o usuário estar na tela do sistema e receber uma mensagem instantânea avisando que tem que hora marcada no detista ?. Sei lá, isso é apenas um exemplo como também poder exibir mensagens praticamente ONLINE numa rede quando, tudo em Clipper. Pra mim vai valer como experiência e eu agradeço, Andril !
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: encerrar programa apos <n> Tempo ocioso????

Mensagem por ANDRIL »

Pablo, qto ao uso de um sistema de mensagens on-line já fiz em um dos meus sistema. Ficou show.

Ao logar o sistema verificava se havia mensagens pendentes, se tivesse mostrava e já eliminava da fila, depois ja entrava o controle on-line, assim se eu enviasse uma mensagem para o PABLO e se este estivesse logado abria uma janela imediatamente em sua maquina com opção: Ler mais tarde, Excluir e Responder.

Era bom tambem, para avisar a todos os usuarios para fechar o sistema em caso de atualização no servidor. Podia tambem mandar mensagens para determinados grupos, setores etc.

Antes de terminar o sistema, tive problema no HD e o ultimo backup que tinha foi recuperado parcialmente e por fim acabei perdendo esta rotina.

Utilizei a EVEN.LIB para desenvolver, se vc precisar, pode ter certeza que com ela ira conseguir, ok.

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Só uma lembrança: a função FT_OnTick(), da NanFor, que é a que eu utilizo, faz o mesmo trabalho que a BGEvents; talvez com uma ou outra diferença de implementação. Não sei dizer exatamente qual. Mas é basicamente a mesma coisa.

E quanto à LIB que mencionaram: ela não existe no pacote original. É apenas uma biblioteca que criaram para armazenar os objetos que constam no pacote, provavelmente para facilitar o trabalho de linkedição. Nada mais que isso.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

EVEN.LIB

Mensagem por Pablo César »

ANDRIL escreveu:verificava se havia mensagens pendentes, se tivesse mostrava e já eliminava da fila
Pois é... eu também ja tenho algo parecido, mas nada ianda ON-LINE (vamos assim dizer). O que eu queria saber: qual é o tempo que você deixou como default para checar se existe mensagens ?. Sei que isso poderia ser configurável, que cada usuário setasse cada tanto segundos ou acada tantos minutos. Mas qual seria o valor ideal para fazer essa checagem ? Você lembra ?
a função FT_OnTick(), da NanFor, que é a que eu utilizo, faz o mesmo trabalho que a BGEvents; talvez com uma ou outra diferença de implementação. Não sei dizer exatamente qual.
Também ouví falar enquanto buscava pelo EVEN.LIB na internet, mas ainda não testei. NA minha documentação do Nanfor não tenho nada sobre o FT_OnTick, mas acredito que a função é a mesma salvo que a função pode ser evaluada através de code-block.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Re: encerrar programa apos <n> Tempo ocioso????

Mensagem por ANDRIL »

Pablo, qto a tempo realmente lembro. Vc deverá levar em consideração o método pois se o tempo for curto demais, muito trafego de mensagens dentre outros poderá ficar ocasionando pequenos travamentos.

Por isso, acho ate viavel ter um banco para as mensagens on-line (aparece na tela) e apos a leitura é gravada p/ outro banco e apagada do banco on-line. Assim agiliza bastante e pode-se ate colocar o tempo como INTERVAL 2.


Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Possivel degradação

Mensagem por Pablo César »

ANDRIL escreveu:Por isso, acho ate viavel ter um banco para as mensagens on-line (aparece na tela) e apos a leitura é gravada p/ outro banco e apagada do banco on-line.
Ao invés disso eu utilizo na criação de arquivo texto em determinada pasta onde somente armazenará mensagens. Daí é sabido se existe arquivo ou não pois a msg poderá ser movida ou deletada.

Eu ainda acho que esse valor de INTERVAL 2, causaria uma interrupção/tráfego considerável, talvez o valor deveria ser cada 5 segundos ?. Pergunto para saber a sua experiência quando a esse método, pois não tinha certeza que poderia degradar a execução do sistema. Enfim, tudo tem um preço a ser pago... se quisermos executar algo ao mesmo tempo irá sempre demandar algo. Seria interessante monitorar a atividade do processador nesse instante de execução em background.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: encerrar programa apos <n> Tempo ocioso????

Mensagem por asimoes »

Pessoal,

Estou tentando usar a função FT_Ontick da Nanfor e não estou conseguindo faze-la funcionar.

Estou fazendo o seguinte teste:

Código: Selecionar todos

FUNCTION PRINCIPAL
FT_ONTICK("MOSTRA",10)
DO WHILE .T.
   @10,00 SAY TIME()
ENDDO
RETURN

PROCEDURE MOSTRA
@11,00 SAY TIME()
RETURN
Na compilação estou fazendo assim:

CLIPPER FTESTE /N
BLINKER FI FTESTE LIB NANFOR,CPMI
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: encerrar programa apos <n> Tempo ocioso????

Mensagem por Maligno »

Alguma mensagem de erro? Pelo código dá pra ver que está tudo certo. Inclusive, parecido com o NG. Tente passar a função como bloco de código. É assim que faço e funciona normalmente.

Código: Selecionar todos

function Principal
FT_OnTick({||Mostra()},10)
while .T.
   @ 10,00 say Time()
end
quit


function Mostra()
@ 11,00 say Time()
return
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: encerrar programa apos <n> Tempo ocioso????

Mensagem por asimoes »

Olá Maligno,

Não me dá mensagem de erro nunhuma, estou fazendo como no exemplo da NG, vou tentar como bloco de código como você indicou.
Volto aqui se o resultado for negativo.

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

A forma que mostrei é exatamente como eu uso. A única diferença que o bloco de código que informo é na verdade uma função de cadastramento de blocos de códigos que deverão ser executados no tempo configurado. É um tipo de splitter. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: encerrar programa apos <n> Tempo ocioso????

Mensagem por alxsts »

Olá amigos, bom dia.

Existe uma rotina, se me lembro bem, que se acrescenta ao GetSys.Prg, chamada de GetTimeOut. Vinha junto com outras chamadas, GetPassWord e outras. São cláusulas acrescentadas ao comando GET. Procurei nos meus guardados mas não achei... Pesquisem...

[]´s
AlxSts
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: encerrar programa apos <n> Tempo ocioso????

Mensagem por Maligno »

Mas esse tópico não tem nada a ver com GET.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: encerrar programa apos <n> Tempo ocioso????

Mensagem por alxsts »

Olá amigos.

Desculpem... Imaginei um wait state gerado por um READ ou ReadModal().
Em 27-05-2008, Pablo Cesar escreveu:
...Outra medida, um tanto radical, é inserir no GETSYS.PRG a temporização para saída de cada GET. Quando falo em temporização é a quantidade de segundos que o sistema deve esperar e isso eu deixo que o usuário configure, mas disponibilizo essa configuração em minutos.
Foi a essa temporização que me referi.

[]´s
AlxSts
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: encerrar programa apos <n> Tempo ocioso????

Mensagem por Maligno »

Valeu, claro. Mas isso só funciona se tivessemos garantia de que o sistema SEMPRE tivesse um GET ainda aberto. Infelizmente não é o caso. O usuário pode estar num menu ou browser. Por isso da necessidade de uma solução mais genérica. Aí entra a solução da InKey() ou um sistema de checagem em background.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

encerrar programa apos <n> Tempo ocioso????

Mensagem por Pablo César »

Só a título de esclarecimento sobre a mencionada biblioteca: BGEVENTS.LIB. Bem ela no pacote original de lá no OASIS, não existe. Aliás, não existe LIB alguma, o que se tem são os arquivos OBJs (bgevents.obj e events.obj) que ao meu ver alguém (1998) transformou em LIB juntando-as, que é essa EVEN.LIB que todos falamos. Falo isto em dedução que obtive ao ler o bgevents.txt que tem no pacote, leia parte do trecho a seguir:
Usage

Include bgevents.ch in every file where you want to deal
with the background event system.
Link bgevents.obj and events.obj with the rest of the
source.

Do not forget to activate your events,
explicity by activating each event individually, using
"Activate event <xEvent>" or
using "Background Events Autoexecute" before your event
definitions.
I like the latter.
Isso quer dizer que devemos linkar com esses objs. Então vou disponibilizar a EVEN.LIB que eu tenho aqui (devo ter adquirido há algum tempo atrás nos pactes do Wagner), a pedido de um colega, pois não vejo mal algum ja que esse arquivo é fruto do próprio pacote e se for útil para alguém, então eis ele em anexo.
Anexos
EVEN.zip
(5.07 KiB) Baixado 180 vezes
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder