27 Ago 2020 11:50
juniorcamilo escreveu:obrigado pela informação!
por onde começo para migrar de xharbour para harbour! tem alguém dos amigos que queira essa empreita?
27 Ago 2020 14:44
JoséQuintas escreveu:Talvez tenha faltado dizer uma coisa:
Se for executado em segundo plano, sem janela, corre o risco de caso aconteça erro, não ver o erro.
De repente até está executando, mas está ocorrendo erro.
Tente ver se tem registro de erro em log, ou acrescente pra gravar erro em arquivo, ou alguma outra alternativa.
31 Ago 2020 08:25
JoséQuintas escreveu:juniorcamilo escreveu:obrigado pela informação!
por onde começo para migrar de xharbour para harbour! tem alguém dos amigos que queira essa empreita?
Antes de uma mudança radical, veja se realmente precisa de multithread.
Aqui uso apenas pra abrir várias janelas.
Em GUI há um detalhe a mais: você pode ter um módulo SEM JANELA, SEM TELA visível.
Aliás... dois detalhes a mais: caso NÃO defina uma janela pra thread, vai ser usada a atual, pra tela/teclado. Dependendo do que fizer no módulo da thread, precisa uma janela, mesmo que invisível, senão uma atropela a outra. Por exemplo, se os dois módulos tem Inkey(5), o que digitar pode ir pra qualquer das threads.Já com janela invisível, o Inkey(5) apenas vai aguardar 5 segundos, se não existir janela.
31 Ago 2020 11:47
juniorcamilo escreveu:um uso q gostaria de aplicar uma thread é quando entra no sistema e faz uma conexão com meu FTP para verificar atualizações e liberar o uso do sistema aos clientes, outra para fazer consultas em vários arquivos para gerar uma pesquisa sem deixar o cliente esperando!
31 Ago 2020 14:31
31 Ago 2020 15:09
juniorcamilo escreveu:onde eu acho ajuda para criar(aprender) um exe em xhaubor para deixar em system tray?
16 Set 2020 10:19
pThread := StartThread( Conta_Carga() )
Frm_Firmas.activate
StopThread(pThread)
FUNCTION Conta_Carga()
LOCAL Qtd_Sel_El_Disp := 0
Qtd_Sel_El_Next := 0
Msg_Cnt_Selos := ""
//while .t.
IF ! EMPT(SETFIRM->ULT_SEL_EL) .AND. ! EMPT(SETFIRM->FIM_SEL_EL)
Qtd_Sel_El_Disp := VAL(SUBS(SETFIRM->FIM_SEL_EL,5)) - VAL(SUBS(SETFIRM->ULT_SEL_EL,5)) + 1
ENDIF
IF ! EMPT(SETFIRM->C_SEL_I) .AND. ! EMPT(SETFIRM->C_SEL_F)
Qtd_Sel_El_Next := VAL(SUBS(SETFIRM->C_SEL_F,5)) - VAL(SUBS(SETFIRM->C_SEL_I,5)) + 1
ENDIF
Msg_Cnt_Selos := "Selo Inicial: " + SETFIRM->ULT_SEL_EL + " Último Selo: " + SETFIRM->FIM_SEL_EL + " = " + ALLTRIM(STR(Qtd_Sel_El_Disp,12,0)) + ;
" Selos - Próxima Carga: " + ALLTRIM(STR(Qtd_Sel_El_Next,12,0)) + " Selos - TOTAL DE SELOS: " + ALLTRIM(STR(Qtd_Sel_El_Disp+Qtd_Sel_El_Next,12,0))
Frm_Firmas.Lbl_Ult_Sel.Value := Msg_Cnt_Selos
//end
RETURN NIL
16 Set 2020 11:01
16 Set 2020 12:40
18 Set 2020 08:35
18 Set 2020 10:30
18 Set 2020 10:32
19 Set 2020 10:22
FUNCTION AbreFirmas()
LOCAL pThread
*
*
// a) Dá erro: Executa a função e em seguida o erro "Error BASE/3012 Erro nos parâmetros: HB_THREADSTART"
pThread := StartThread( HB_THREAD_INHERIT_PUBLIC, Conta_Carga() )
// b) Não funciona.
pThread := StartThread( HB_THREAD_INHERIT_PUBLIC, @Conta_Carga() )
// c) Não funciona, nada acontece.
pThread := StartThread( HB_THREAD_INHERIT_PUBLIC, {|| Conta_Carga() } )
Frm_Firmas.activate
// Isso aqui dá erro: Quando executa do modo "b" ou "c", dá isso: "Error BASE/3012 Erro nos parâmetros: HB_THREADQUITREQUEST".
StopThread(pThread)
19 Set 2020 10:59
19 Set 2020 11:08