Página 2 de 3

BGEVENTS

Enviado: 27 Mai 2008 19:10
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 !

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

Enviado: 27 Mai 2008 20:11
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+

Enviado: 27 Mai 2008 20:13
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.

EVEN.LIB

Enviado: 27 Mai 2008 21:41
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.

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

Enviado: 28 Mai 2008 12:30
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+

Possivel degradação

Enviado: 28 Mai 2008 13:06
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.

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

Enviado: 27 Set 2008 15:19
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

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

Enviado: 27 Set 2008 15:30
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

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

Enviado: 27 Set 2008 18:37
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

Enviado: 27 Set 2008 18:56
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. :)

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

Enviado: 16 Jun 2009 02:23
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

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

Enviado: 16 Jun 2009 03:21
por Maligno
Mas esse tópico não tem nada a ver com GET.

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

Enviado: 16 Jun 2009 16:01
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

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

Enviado: 16 Jun 2009 16:04
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.

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

Enviado: 09 Dez 2010 08:23
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.