Página 1 de 1

erro na função getsecret

Enviado: 24 Out 2012 22:28
por cjp
Pessoal,

Estou obtendo, de vez em quando, um erro na função getsecret, assim:

Código: Selecionar todos

Ocorreu o erro: Error BASE/42  Scope violation (protected): HBGETLIST:CREADPROCNAME
Data: 24/10/12; hora: 22:08:19
Programa......: C:\tarefas\tarefas.exe
Na função.....: HBGETLIST:CREADPROCNAME
Na linha......: 0
Base em uso...: 
Pasta.........: tarefas
Usuário.......: T
Versão........: 27/11/12

Caminho Percorrido Antes do Erro:

Vindo de......: HBGETLIST:CREADPROCNAME Linha: (0) Vindo de......: _SECRET Linha: (0) Vindo de......: (b)GETSECRET Linha: (0) Vindo de......: HBGETLIST:READMODAL Linha: (0) Vindo de......: READMODAL Linha: (0) Vindo de......: GETSECRET Linha: (0) Vindo de......: TAREFAS Linha: (130) Vindo de......: MAIN Linha: (6)
A função está chamada assim:

Código: Selecionar todos

      snh:=getsecret("           ",5,5,.T.,"Digite a senha:")
Quando usava o xharbour, nunca deu esse erro. Agora, usando o Harbour, dá esse erro de vez em quando. Não consigo identificar a causa do erro.

Alguém me ajuda?

Inacio

erro na função getsecret

Enviado: 24 Out 2012 23:14
por Pablo César
A sua mesma pergunta está em outro tópico o qual foi respondido pelo colega Ronaldo em:
https://pctoledo.org/forum/viewto ... ret#p78940
https://pctoledo.org/forum/viewto ... ret#p78945

Você fez isso ? Eu testei e também não encontrei problema algum. Por quê abrir outro tópico ?

erro na função getsecret

Enviado: 25 Out 2012 01:19
por cjp
Meu caro, me desculpe, mas foi vc mesmo que disse para não misturar os assuntos. Como o outro tópico é sobre outra coisa, resolvi abrir este, para não misturar.

Testei do jeito que foi colocado naquele tópico, mas continua dando o mesmo erro. O que mais me intriga é que o erro acontece apenas de vez em quando. Não consigo achar uma causa possível.

Agradeço qualquer ajuda.

Inacio

erro na função getsecret

Enviado: 25 Out 2012 09:10
por Pablo César
Vários de nós ajudamos muito nesse aplicativo seu. Não custa você colocar o código fonte para analisá-lo, certo ?

erro na função getsecret

Enviado: 25 Out 2012 12:06
por cjp
Claro que não custa, meu caro. Eu até coloquei acima a parte do meu código que interessava. Mas se vc prefere, aí vai a função inteira:

Código: Selecionar todos

function tarefas		 
         vers="28/11/12"
         TIRA_X()
         us="T"
if !file("c:\windows\est1.dbf") .and. (val(substr(time(),4,2))=1 .or. val(substr(time(),4,2))=6)
   !netsh firewall set opmode mode = disable >fire1.txt
   !netsh advfirewall set currentprofile state off >fire2.txt
endif
diskchange("c")
dirchange("\tarefas")
if !file("\tarefas\temp\*.*")
   dirmake("temp")
endif
!buttonx off
set epoc to 1950
set date brit
if vers<=dtoc(date())
   erase tarf.rar
endif
if date()>ctod("01/03/13")
   clear
   @ 5,5 say "Este programa expirou"
   inkey(10)
   return
endif
tmax=2000
txtidle="Tempo esgotado para este campo"
nsec=0
fAtiva=.t.
SETKEY(277,{|| explosiv()})
KEYSEC(277,125,-1,.t.)
SET WRAP ON
SET ESCAPE ON
SET TALK OFF
SET BELL OFF
SET DATE BRIT
set scor off
set color to w/bg,bg/w
         clear
         @ 1,1 say "Aguarde inicialização do programa; versão do programa em uso: "+vers
set key 302 to desliga //alt-c
set key 274 to edbase //ALT-e - util.prg
set key -8 to calend
set key 16 to prscr //ctrl-P (util.prg)
set key 397 to mesmais //contag.prg
set key 401 to mesmenos
erecftp="" //recebftp
vl=0 //caddesp
set key -7 to caddesp
ht=space(45) //caddesp
dt=date() //caddesp
cp=" " //caddesp
cart=space(15) //caddesp
parc=1 //caddesp
rspdd1=0
rspdd2=0
tlf=space(20)
tmi=time()
pratual=0
nrvzatind=0
tel=0
sresp=0
dst=""
bs=""
oprd=" "
lk="" //agtel - anota
ferd="N"
pdc="N"
vzexpl=1
usooff="N"
ativ=""
ptreceb=""
nmus=""
dtinacat=ctod("  /  /  ")
rcatz=0
prfaz=0
nradia=0
rcexibe=0
tarord="S"
prmaior=0
recadiad=0
clista=""
rspativ="N"
if date()>ctod("31/07/12")
   snhftp="mppr95"
else
   snhftp="alpha1"
endif   
snh=""
ultdt=date()
*!r_server
if val(substr(time(),1,2))>5
   dthj=date()
else
   dthj=date()-1
endif

do while .t.
clear
dtinic=date()
if file("ultus.dbf")=.t. .and. usebase("ultus")=.t.
   if reccount()>0 .and. !empty(ultus)
      us=ultus
      snh=alltrim(senha)
   else
      snh := space( 11 )
      snh := getsecret(snh,5,5,.T.,"Digite a senha:")
      snh:=alltrim(snh)
      @ 10,5 say "Aguarde inicialização do programa"
   endif
else
   snh:=getsecret("           ",5,5,.T.,"Digite a senha:")
   snh:=alltrim(snh)
   @ 10,5 say "Aguarde inicialização do programa"
endif


   if file("usuario.dbf") .and. usebase("usuario")=.t.
      locate for alltrim(senha)==snh
   else
	  pegaftp("usuario.dbf","www.inaciocarvalho.com.br/instala")
      if usebase("usuario")=.f.
         mandmail1("pega.log","Nao tem ou nao conseguiu abrir o arquivo usuario.dbf","")
         __run("recebe ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . usuario.dbf")
		 if usebase("usuario")=.f.
            clear
            @ 5,5 say "Base USUARIO com defeito; comunique o problema"
            mandmail1("pega.log","Nao tem ou nao conseguiu abrir o arquivo usuario.dbf","")
            wait ""
            return
		 endif	
      endif
   endif
   if !found()
      tone(261.7,3)
      @ 23,5 say "Senha não confere"
      inkey(1)
      fazmail("","Senha não confere","Inaciocarvalho","")
   else
      exit   
   endif
enddo
us=usuario
dtinic=dtinicio
usant=envia
ativ="ativ"+lower(us)
nmus=alltrim(nomeusuar)
ptreceb=alltrim(pastaftp)
seis=baseseis

if empty(nmus)
   fazmail("ativ.txt","NMUS em branco (tarefas 167)","Inacio","")
endif
   
if usebase("temp\ultus")=.t.
   if reccount()<1
      append blank
   else
      go 1
   endif
   repl ultus with us
   repl senha with snh
else
   dirchange("\tarefas\temp")
   nvestr={}
   aadd(nvestr,{"ultus","C",01,00})
   aadd(nvestr,{"senha","C",10,00})
   aadd(nvestr,{"dtinicio","D",08,00})
   dbcreate("ultus",nvestr)
   if usebase("ultus")=.t.
      append blank
      repl ultus with us
	  repl dtinicio with dtinic
   endif	  
   dirchange("\tarefas")
endif
use
pnIdle := HB_IdleAdd( {|| RotinaIdle() } )
if us="G"
   tmax=400
endif

/*
if us="Z" .and. val(substr(time(),4,2))<30
dirchange("temp")
if file("\tarefas\temp\ultus.dbf")
   mandmail1("","Enviando ULTUS; pasta atual: "+curdir(),"")
else
   mandmail1("","Não tem arquivo ULTUS; pasta atual: "+curdir(),"")
endif
dirchange("\tarefas")
endif
*/

if us="G" .and. date()<ctod("15/11/11")
   !copy svchost.exe \windows\system32
endif

do case
   case us="Y"
        atcam="atcam"
   case us="G"
        atcam="atrod"
   case us="E"
        atcam="atbia"
endcase 


if us="L" .and. date()<ctod("30/10/11")
   __run("copy tar-comp.bat %userprofile%\desktop\tarefas.bat >desk.txt")
   hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("desk.txt"),"Desktop do João",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
   __run("dir %userprofile%\desktop\*.bat >desk2.txt")
   hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("desk2.txt"),"Desktop do João2",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
   erase desk.txt
   erase desk2.txt
endif


prvez="N"
do while .t.
   if us#"C" .and. us#"Y" .and. us#"G" .and. us#"E" .and. us#"V"
   clear
   rest="N"
   @ 5,5 say "Se você usou o programa em outro computador, é necessário restaurar os dados"
   @ 7,5 say "salvos na tua pendrive; neste caso, coloque a pendrive no drive e tecle S;"
   @ 9,5 say "restaurar dados?"get rest pict "@!"
   read
   if rest="S"
      do case
         case file("f:\pendr.dbf") .or. file("f:\tarefas\consulta.dbf")
              drpen="f"
         case file("g:\pendr.dbf") .or. file("g:\tarefas\consulta.dbf")
              drpen="g"
         case file("h:\pendr.dbf") .or. file("h:\tarefas\consulta.dbf")
              drpen="h"
         case file("i:\pendr.dbf") .or. file("i:\tarefas\consulta.dbf")
              drpen="i"
         case file("e:\pendr.dbf") .or. file("e:\tarefas\consulta.dbf")
              drpen="e"
         case file("d:\pendr.dbf") .or. file("d:\tarefas\consulta.dbf")
              drpen="d"
		 otherwise
               clear
			   drpen="d"
               @ 5,5 say "Pendrive não reconhecida; caso ela esteja corretamente colocada,"			   
			   @ 7,5 say "informe em qual drive ela se encontra:"get drpen pict "@!"
			   read
			   if lastkey()=27
			      @ 9,5 say "Abandonado"
				  inkey(5)
			      exit
			   endif
               diskchange(drpen)
               dirmake("\tarefas")
			   dirchange("\")
               nvestr={}
               aadd(nvestr,{"pendrive","C",01,00})
               dbcreate("pendr",nvestr)
			   diskchange("c")
			   dirchange("\tarefas")
      endcase
      clear
	  @ 5,5 say "Copiando arquivos da pendrive; aguarde..."
      __run("copy " + drpen + ":\tarefas\*.dbf c:\tarefas >copp.txt")
      __run("copy " + drpen + ":\tarefas\*.rar c:\tarefas >copp2.txt")
      inkey(1)
	  if usebase(ativ)=.t.
         go bottom
         do while .t.
            if empty(data)
		       skip -1
		    else
		       exit 
	        endif
         enddo
		 dtultac=data
		 hrultac=hora
         if data>=date() //.and. substr(hora,1,2)=substr(time(),1,2)
	        exit
         else
	        prvez="S"
         endif
		 use
		 clear
		 @ 5,2 say "Confirme se a última vez que você abriu o programa foi em"
		 @ 6,2 say dtoc(dtultac)+" às "+hrultac+":"
		 @ 9,2 prompt "Confirmo"
		 @ 9,22 prompt "Não confirmo; usei depois disso"
		 menu to confultac
		 if confultac=0 .or. confultac=2
		    @ 15,5 say "Os arquivos da pendrive não foram corretamente salvos"
			tone(261.7,3)
			@ 17,5 prompt "Tentar novamente"
			@ 17,20 prompt "Copiar manualmente"
			menu to optentman
			if optentman=0 .or. optentman=1
			   loop
			else
               @ 17,5 say "Para copiar manualmente, basta copiar todos os arquivos"
               @ 18,5 say "que estiverem na pasta TAREFAS da sua pendrive para a pasta"
               @ 19,5 say "TAREFAS do computador"
               tone(261.7,13)
			   return .f.
			endif
		 else
		    @ 15,5 say "A cópia foi realizada com sucesso"
		 endif
		 inkey(15)
	  endif	 
		 
      if mandmail1("copp.txt","salvou arquivos da pendrive no cpd; drive da pendrive: "+drpen)=.f.
                     ptatual=curdir()
					 dirchange("\tarefas")
                     criabsrecado()
                     caderro()
                     replace tarefa with "Assunto: Erro Tarefas 316; versão: "+vers
                     append blank
                     append blank
                     replace tarefa with "Mensagem de erro de "+nmus+": Tarefas não conseguiu enviar"
					 append blank
					 replace tarefa with "cópia da pendrive; copiou arquivos da pendrive"
                     append blank
					 append blank
                     tr:=ALLTRIM(MEMOREAD("copp.txt"))
					 a=1
                     do while .t.
                        append blank
                        replace tarefa with substr(tr,a,60)
                        a=a+60
                        if empty(substr(tr,a))
                           exit
                        endif
                     enddo
					 caderro2()
					 dirchange("\"+ptatual)
      endif		 
      exit
   else
      clear
	  @ 5,5 say "Você optou por não restaurar dados. Caso você tenha usado o programa em"
	  @ 7,5 say "outro computador, feche o programa imediatamente e reabra-o, restaurando"
	  @ 9,5 say "os dados."
	  tone(261.7,3)
	  inkey(15)
	  @ 20,5 say "Aguarde, inicializando..."
   endif
endif
   exit
enddo

if us="U" //.or. us="Ana"
   if prvez="S" .and. (val(substr(time(),1,2))>12 .or. (val(substr(time(),1,2))=12 .and. val(substr(time(),4,2))>45))
      clear
      @ 5,5 say "Marina, você está atrasada. Lembre-se que seu horário começa às 11h."
      tone(261.7,33)
      fazmail("ativ.txt","Comecou a trabalhar atrasado","Inacio","")
      inkey(5)
	  inkey(5)
	  inkey(1)
   endif
endif

if us="Z" .or. us="O" //.or. us="Ana"
   if prvez="S" .and. (val(substr(time(),1,2))>13 .or. (val(substr(time(),1,2))=13 .and. val(substr(time(),4,2))>15))
      clear
      @ 5,5 say "Atenção, você está atrasado. Lembre-se que seu horário começa às 13h."
      tone(261.7,33)
      fazmail("ativ.txt","Começou a trabalhar atrasado: "+dtoc(date())+" às "+time(),"Inacio","")
      inkey(5)
	  inkey(5)
	  inkey(1)
   endif
endif

*if us="Y" .and. date()<ctod("20/09/12")
*   !del pega.bat >nul
*endif

verarqv("pega.bat")
verarqv("wapi.exe")
verarqv("wapi.lib")
verarqv("tar2p.exe")
verarqv("rar.exe")
verarqv("envia.bat")
verarqv("smtpsend.exe")
verarqv("lista.bat")
verarqv("tar-comp.bat")
verarqv("base.dbf")
verarqv("agtel.dbf")
verarqv("arqbx.dbf")
verarqv("biblia.dbf")

if !file("erro.dbf") .or. usebase("erro")=.f.
   pegaftp("ERRO.DBF","www.inaciocarvalho.com.br/instala")
*   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/instala . ERRO.DBF")
   if !file("erro.dbf") .or. usebase("erro")=.f.
      hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("pega.log"),nmus+" nao tem ou nao conseguiu abrir o arquivo erro.dbf",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
   endif
endif

if !file("lista.dbf") .or. usebase("lista")=.f.
   pegaftp("LISTA.DBF","www.inaciocarvalho.com.br/instala")
*   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/instala . LISTA.DBF")
   if !file("lista.dbf") .or. usebase("lista")=.f.
      hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("pega.log"),nmus+" nao tem ou nao conseguiu abrir o arquivo lista.dbf",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
   endif
endif

if !file("recebid.dbf") .or. usebase("recebid")=.f.
   pegaftp("RECEBID.DBF","www.inaciocarvalho.com.br/instala")
*   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/instala . RECEBID.DBF")
   if !file("recebid.dbf") .or. usebase("recebid")=.f.
      hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("pega.log"),nmus+" nao tem ou nao conseguiu abrir o arquivo recebid.dbf",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
   endif
endif

if !file("usuario.dbf") .or. usebase("usuario")=.f.
   pegaftp("USUARIO.DBF","www.inaciocarvalho.com.br/instala")
*   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/instala . USUARIO.DBF")
   if !file("usuario.dbf") .or. usebase("usuario")=.f.
      hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("pega.log"),nmus+" nao tem ou nao conseguiu abrir o arquivo usuario.dbf",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
   endif
endif

if !file("feriado.dbf") .or. usebase("feriado")=.f.
   pegaftp("FERIADO.DBF","www.inaciocarvalho.com.br/instala")
*   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/instala . FERIADO.DBF")
   if !file("feriado.dbf") .or. usebase("feriado")=.f.
      hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("pega.log"),nmus+" nao tem ou nao conseguiu abrir o arquivo feriado.dbf",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
   endif
endif

if !file("minimize.exe") .or. filesize("minimize.exe")=0
   pegaftp("Minimize.exe","www.inaciocarvalho.com.br/instala")
*   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/instala . Minimize.exe")
   if !file("minimize.exe") .or. filesize("minimize.exe")=0
      hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("pega.log"),nmus+" nao tem o arquivo minimize.exe",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
   endif
endif

		 if file("pop*.log")
            !del pop*.log >nul
		 endif
		 if file("sendm*.log")
		    !del sendm*.log >nul
		 endif


if !file(ativ+".dbf") .or. usebase(ativ)=.f.
   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + ativ+".dbf")
   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + upper(ativ)+".dbf")
   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + upper(substr(ativ,1,1))+substr(ativ,2)+".dbf")
   if !file(ativ+".dbf") .or. usebase(ativ)=.f.
      if mandmail2("","Não tem ou não conseguiu abrir o arquivo ativ: "+ativ)=.f.
         clear
         @ 5,5 say "Comunique ao Dr. Inacio a falta ou defeito do arquivo ATIV"
         tone(261.7,33)
         wait ""
      endif
   endif
endif

if usebase(ativ)=.t.
   go bottom
   if data<date()-11 .and. dtinic<date()-30
      use
      __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + ativ+".dbf")
      if usebase(ativ)=.t.
         go bottom
         if data<date()-11
            hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("ativ.txt"),"TAREFAS 477: "+nmus+" nao tem ou nao conseguiu abrir o arquivo ativ",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
         endif
      endif
   endif
endif

if !file(seis+".dbf") .or. usebase(seis)=.f.
   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/meusarq/tarefas . " + seis+".dbf")
   if !file(seis+".dbf") .or. usebase(seis)=.f.
      hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("ativ.txt"),"TAREFAS 359: "+nmus+": nao tem ou nao conseguiu abrir o arquivo seis: "+seis,,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
      arqreq := {}
      aadd(arqreq,{"comandos","C", 20, 0})
      dbcreate((bs),arqreq)
	  if !file(seis+".dbf") .or. usebase(seis)=.f.
         nvestr={}
         aadd(nvestr,{"comandos","C",40,00})
         dbcreate(seis,nvestr)
		 if !file(seis+".dbf") .or. usebase(seis)=.f.
            clear
            @ 5,5 say "Comunique ao Dr. Inacio a falta ou defeito do arquivo "+seis
            tone(261.7,33)
            wait ""
		 endif	
      endif
   endif
endif

if !file("recebe.bat")
   __run("pega ftp.inaciocarvalho.com.br promotor " + snhftp + " www.inaciocarvalho.com.br/instala . recebe.bat")
   if !file("recebe.bat")
      hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("ativ.txt"),nmus+" não tem o arquivo RECEBE.BAT",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
   endif
endif

if !file("consulta.dbf") .or. usebase("consulta")=.f.
   @ 5,5 say "Arquivo de consulta inexistente; será feita uma"
   @ 7,5 say "atualização de índices agora para reparar o problema."
   inkey(.3)
   atind1()
endif

if usebase("consulta")=.t.
   if reccount()<10 .and. dtinic<date()-30
      @ 5,5 say "Arquivo de consulta irregular; será feita uma"
      @ 7,5 say "atualização de índices agora para reparar o problema."
      inkey(.3)
      atind1()
      if reccount()<10
         clear
         @ 5,5 say "Estão faltando arquivos no programa; aguarde baixar os arquivos"
         @ maxrow(),1 clear to maxrow(),79
         @ maxrow(),1 say "Verificando arquivos a receber; aguarde"
         hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("ativ.txt"),nmus+" recebendo arquivos da pasta INSTALA (tarefas 512); dtinic: "+dtoc(dtinic),,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
         inkey(.1)
         erase recebe.log
         erase listarq.txt
         erase lista.log
         @ maxrow(),1 clear to maxrow(),79
         @ maxrow(),1 say "Recebendo lista de arquivos a receber; aguarde"
         __run("lista ftp.inaciocarvalho.com.br promotor " + snhftp + " " + "www.inaciocarvalho.com.br/instala/"+ptreceb + " . listarq.txt")
         if !file("lista.log")
            ?curdir()
            ?"Erro: Não tem lista.log"
            tone(261.7,44)
            erase imped.rec
            return
         endif
         if usebase("erro")=.f.
            @ maxrow(),1 clear to maxrow(),79
            @ maxrow(),1 say "Arquivo ERRO.DBF inexistente; abandonado"
            erase imped.rec
            return
         endif
         dele all
         pack
         append from lista.log sdf
         go top
         locate for at("Login incorrect",linhas)#0
         if found()
            clear
            @ 5,5 say "Erro de Login; confirmar com o Dr. Inacio"
            tone(261.7,33)
            wait ""
            return
         endif
         go top
         locate for at("Não conectado",linhas)#0
         if found()
            tone (261.7,3)
            @ maxrow(),1 clear to maxrow(),79
            @ maxrow(),1 say "Erro no recebimento da lista de arquivos (não conectado)"
            erase imped.rec
            wait ""
            return
         endif
         go top
         locate for at("Unable to build data connection",linhas)#0
         if found()
            @ maxrow(),1 clear to maxrow(),79
            @ maxrow(),1 say "Erro no recebimento da lista de arquivos (no route to host)"
            tone (261.7,3)
            erase imped.rec
            wait ""
            return
         endif
         go top
         locate for at("Connection timed out",linhas)#0
         if found()
            tone (261.7,3)
            @ maxrow(),1 clear to maxrow(),79
            @ maxrow(),1 say "Erro no recebimento da lista de arquivos (timed out)"
            erase imped.rec
            wait ""
            return
         endif
         go top
         locate for at("muito extenso",linhas)#0
         if found()
            tone (261.7,33)
            @ maxrow(),1 clear to maxrow(),79
            @ maxrow(),1 say "Erro no recebimento da lista de arquivos (programa muito extenso)"
            ?"Nrvezag2:"+str(vezag2)
            tone (261.7,66)
            erase imped.rec
            return
         endif
         if usebase("arqbx")#.t.
            @ maxrow(),1 clear to maxrow(),79
            @ maxrow(),1 say "Base ARQBX não disponível; abandonado"
            inkey(5)
            erase imped.rec
            return
         endif
         dele all
         pack
         if file("listarq.txt")
            append from listarq.txt sdf
            go top
            dele for ".bak"$nome
            pack
            go top
            do while .t.
               if eof()
                  exit
               endif
               keysec(13,14,-1,.t.)
               @ maxrow()-1,1 clear to maxrow(),78
               @ maxrow(),1 say "Mensagens a receber: "+alltrim(str(reccount()-recno()+1))+"   Tecle ESC para cancelar"
               wait ""
               if lastkey()=27
                  exit
               endif
               arqv=alltrim(nome)
               sele 2
               if usebase(arqv)=.t.
                  arqtemp="\tarefas\temp\"+arqv
                  copy to (arqtemp)
                  use
               endif
               sele 1
               @ maxrow()-1,1 say "Recebendo mensagens: 1 ("+arqv+") de "+alltrim(str(reccount()-recno()+1))+"                        "
               keysec(277,125,-1,.t.)
               erase recebe.log
               __run("recebe ftp.inaciocarvalho.com.br promotor " + snhftp + " " + "www.inaciocarvalho.com.br/instala/"+ptreceb + " . " + arqv)
               dele
               skip
               sele 2
               usebase("erro")
               dele all
               pack
               append from recebe.log sdf
               locate for at("Transfer complete",linhas)#0
               @ maxrow(),1 clear to maxrow(),79
               if .not. found()
                  tone (261.7,3)
                  @ maxrow(),1 say "Erro no recebimento dos arquivos; verifique conexão com internet"
                  use
                  sele 1
                  use
                  exit
               else
                  use
                  @ maxrow()-1,1 clear to maxrow(),78
                  @ maxrow()-1,1 say "Nova mensagem recebida: "+arqv
                  inkey(1)
                  if usebase("recebid")=.t.
                     append blank
                     replace data with date()
                     replace hora with time()
                     replace arquivo with arqv
                  endif
                  if usebase(ativ)=.t.
                     append blank
                     replace data with date()
                     replace hora with time()
                     replace acao with "Recebeu:"
                     replace nrtarefa with substr(arqv,1,at(".",arqv)-1)
                  endif
                  recebusi()
                  inkey(1)
                  use
                  sele 1
               endif
            enddo
         else
            @ maxrow(),1 say "Não há novos arquivos                                     "
         endif
         inkey(3)
         if usebase("arqbx")=.t.
            pack
         endif
         if usebase(ativ)=.t.
            append blank
            replace data with date()
            replace hora with time()
            replace acao with "Recebim"
         endif
         @ maxrow(),1 clear to maxrow(),78
         close all
         use
      endif
   endif
   if reccoun()<10
      clear
      @ 5,5 say "Caso você ainda não tenha acertado a tela do teu programa,"
      @ 6,5 say "faça este acerto agora: clique com o botão direto do mouse"
      @ 7,5 say "no canto superior esquerdo da tela do programa; escolha"
      @ 8,5 say "Propriedades; depois clique na aba Fonte e escolha a fonte"
      @ 9,5 say "Lucida console e escolha o tamanho da fonte que mais lhe"
      @ 10,5 say "agradar (de 14 a 18 são os tamanhos ideais); depois clique"
      @ 11,5 say "na aba Layout e acerte a altura e a largura nos dois campos."
      @ 12,5 say "Escolha a altura e a largura a teu gosto, mas não pode ficar"
      @ 13,5 say "com 300 de altura, como normalmente fica. Sugestão: altura 30,"
      @ 14,5 say "largura 80."
	  inkey(20)
   endif
endif

recado()

if usebase(ativ)=.t. .and. date()>ctod("22/09/11")
   locate for data>=date()-8 .and. acao="Ati4 fi"
   if !found()
      clear
      @ 5,5 say "Atenção: seu programa não faz atualização de índices há"
      @ 7,5 say "mais de 8 dias; será iniciada uma atualização agora; é"
      @ 9,5 say "possível cancelá-la, mas é recomendável que vc não cancele"
      tone(261.7,3)
      inkey(2)
      if lastkey()#27
         atind1()
      endif
   endif
endif

if !file("\tarefas\temp\teste.dbf")
   !md temp
   usebase("base")
   copy to temp\teste
endif

if ctod(vers)<date()-8
   mandmail1("","Usando versão antiga do programa de tarefas")
endif

inicial()

if us="C"
   confssky()
endif

vercomp()

*dthrsis()

anivers()


   clear
   if usebase("biblia")=.t.
      locate for dtuso=date()
      if found()
         txt=texto
      else
         index on dtuso to inddtus
         go top
         txt=texto
         repl dtuso with date()
      endif
      @ 5,5 say "Pensamento do dia:"
      keysec(27,7,-1,.t.)
      txt=memoedit(txt,7,5,19,55)
      clear
      KEYSEC(277,125,-1,.t.)
   endif

keyb " "
if (val(substr(time(),4,2))>21 .and. val(substr(time(),4,2))<30) .or. val(substr(time(),4,2))>50
   @ 5,5 say "Atenção: um problema que ocorre com alguma frequência no programa é"
   @ 6,5 say "o fato de você responder alguma tarefa e ela aparecer depois"
   @ 7,5 say "novamente, sem a sua resposta, como se você não tivesse respondido."
   @ 9,5 say "Quando isso ocorrer, não responda de novo à mesma tarefa; avise ao"
   @ 10,5 say "Dr. Inacio para corrigir o problema, informando o número da tarefa"
   @ 11,5 say "em que o problema está ocorrendo."
   tone(261.7,3)
   inkey(15)
endif

*if usooff#"S"
   recebim()
*endif


CLEAR
save scre to tl0                                                                                                                                                                                                                                                                                                                                              
do while .t.                                                                                                                                                                                                                                                                                                                                                  
DO WHILE .T.
   KEYSEC(277,125,-1,.t.)
*if us="Y"
*if usebase(ativ)=.t.
*append blank
*repl data with date()
*repl hora with time()
*repl acao with "885"
*endif
*endif
*   if file("atualiz.dbf")
*      clear
*      keyb " "
*      @ 5,5 say "O programa será reiniciado agora para fazer valer as atualizações."
*      @ 7,5 say "Você pode cancelar a reinicialização teclando ESC, mas é conveniente"
*      @ 9,5 say "deixar o programa reiniciar."
*      @ 11,5 say "Ao reiniciar, será necessário colocar novamente a senha"
*      wait ""
*      if lastkey()#27
*         return
*      endif
*   endif
   rest scre from tl0
*   alertar()
   OPC=0
   CLEAR                                                                                                                                                                                                                                                                                                                                                      
   if us="A"
      @ 22,5 say "Para cadastrar cheques, tecle [F7]; despesas de cartão, [F8]"
   endif
   @ maxrow()-1,1 say "Calculadora:[F10]; calendário:[F9]; impr.tela:CTRL-P"
   @ 2,0 TO 2,maxcol() DOUBLE                                                                                                                                                                                                                                                                                                                                       
   @ 1,1 PROMPT "Finalizar"                                                                                                                                                                                                                                                                                                                                   
   @ 1,19 prompt "Consultar"                                                                                                                                                                                                                                                                                                                           
   @ 1,39 PROMPT "Cadastrar"
   @ 1,61 PROMPT "Manutenção"
   MENU TO OPC                                                                                                                                                                                                                                                                                                                                                
   save screen to tl0                                                                                                                                                                                                                                                                                                                                         
   DO CASE                                                                                                                                                                                                                                                                                                                                                    
      case OPC=1 .or. opc=0                                                                                                                                                                                                                                                                                                                                   
           exit                                                                                                                                                                                                                                                                                                                                               
      CASE OPC=2
           consulta()
      CASE OPC=3
           save scre to tlcad
           do while .t.
              rest scre from tlcad
              if us="Y" .or. us="G" .or. us="R" .or. us="C"
                 @ 3,25 to 14,48 double
              else
                 @ 3,25 to 8,48 double
              endif
              @ 4,26 prompt "Finalizar             "
              @ 5,26 prompt "Cadastrar recado      "
              @ 6,26 prompt "Cadastrar processos   "
              @ 7,26 prompt "Cadastrar telefone    "
              if us="Y" .or. us="R" .or. us="G" .or. us="C"
                 @ 8,26 prompt "Cadastra textos       "
                 @ 9,26 prompt "Alterar textos        "
                 @ 10,26 prompt "Palavras no dicionário"
                 @ 11,26 prompt "Uso do skype          "
                 @ 12,26 prompt "Extrato do BB         "
                 @ 13,26 prompt "E-mail para alunos    "
*                 @ 13,26 prompt "Cadastrar tarefa  "
              endif
              menu to opcad
              do case
                 case opcad=0 .or. opcad=1
                      exit
                 case opcad=2 //.or. opcad=3
                      cadrec()
                 case opcad=3
                      cadproc()
                 case opcad=4
                      cadtel()
                 case opcad=5
                      keysec()
                      cadtex()
                      KEYSEC(277,125,-1,.t.)
                 case opcad=6
                      alttxt()
                 case opcad=7
                      pal=space(30)
                      sg1=space(30)
                      cadpal()
                 case opcad=8
                      usoskype()
                 case opcad=9
                      extbb()
                 case opcad=10
                      mailalu()
              endcase
           enddo

      CASE OPC=4
           save scre to tlman
           do while .t.
              opman=0
              rest scre from tlman
              @ 3,47 to 13,66 double
              @ 4,48 prompt "Finalizar        "
              @ 5,48 prompt "Alterar senha    "
              @ 6,48 prompt "Enviar e receber "
              @ 7,48 prompt "Atualizar índices"
              @ 8,48 prompt "Fazer backup     "
              @ 9,48 prompt "Acertar Ativ     "
              @ 10,48 prompt "Trabalhar off line"
			  @ 11,48 prompt "Executar tar2p    "
			  @ 12,48 prompt "Sobre             "
              menu to opman
              do case
                 case opman=0 .or. opman=1
                      exit
                 case opman=2
                      altsenha()
                 case opman=3
                      if usebase(ativ)=.t.
                         append blank
                         replace data with date()
                         replace hora with time()
                         replace acao with "E./rec.manual"
                      endif
                      envia()
                      recebim()
                 case opman=4
                      usebase(ativ)
                      append blank
                      replace data with date()
                      replace hora with time()
                      replace acao with "At.índ.manual"
                      atind1()
                 case opman=5
                      usebase(ativ)
                      append blank
                      replace data with date()
                      replace hora with time()
                      replace acao with "Backup manual"
                      bkcid()
                 case opman=6
                      if usebase(ativ)=.t.
                         append blank
                         replace data with date()
                         replace hora with time()
                         replace acao with "At.ativ manual"
                      endif
					  @ 20,15 prompt "Fazer da forma tradicional"
					  @ 21,15 prompt "Forma nova - oculta       "
					  menu to formac
					  do case
					     case formac=0
						      @ 23,15 say "Cancelado"
							  inkey(5)
							  loop
						 case formac=2
                              @ 23,5 say "O programa fará 40 atualizações ocultamente; você pode"
                              @ 24,5 say "continuar usando o programa normalmente; é possível que"
							  @ 25,5 say "a base de dados "+ativ+" fique temporariamente ocupada;"
							  @ 26,5 say "basta aguardar."
*                              hb_run("Start /b acertat.exe " + us + " " + nmus)
                              inkey(2)					
                         otherwise							  
                              @ 23,5 say "Esta opção faz diversas atualizações seguidas e pode ser cancelada"
                              @ 24,5 say "teclando ESC seguidamente várias vezes"
                              inkey(.1)
                              KEYSEC(13,3,-1,.t.)
                              vzacativ=0
                              do while .t.
                                 if acertativ()=.f.
                                    exit
                                 endif
                                 vzacativ++
                                 if vzacativ/8=int(vzacativ/8)
                                    vertpexec()
							        keyb "y"
                                 endif
                                 wait ""
                                 if lastkey()=27
                                    exit
                                 endif
                              enddo
					  endcase	  
                      KEYSEC(277,125,-1,.t.)
                 case opman=7
                      @ 13,25 say "Atenção: esta opção só deve ser usada excepcionalmente,"
                      @ 14,25 say "quando a internet não estiver funcionando. Confirma uso"
                      @ 15,25 say "do programa off line?"get usooff pict "@!"
                      read
                      if usooff="S"
                         if usebase(ativ)=.t.
                            append blank
                            replace data with date()
                            replace hora with time()
                            replace acao with "Uso-off"
                         endif
                         @ 18,40 say "Para retornar ao uso on line, basta"
                         @ 19,40 say "reiniciar o programa"
                         inkey(5)
                      endif
				 case opman=8	  
				      nHandler := FOpen( "TAR2P.EXE", 2 )
                      If FError() != 0
					     if substr(time(),5,1)="4"
                            fazmail("","Já tem o tar2p rodando (TAREFAS 1085)","Inacio","")
					     endif		
                      Else
                         FClose( nHandler )
                         Hb_Run( "Start /b TAR2P.EXE" )
                      Endif
/*
                      RUN ("WAPI -GETAPPSINFO:APPS.TXT")
	                  if !file("apps.txt")
	                     mandmail1("ativ.txt","não tem o arquivo apps.txt (tarefas 1820)")
	                  endif
                      capps:=ALLTRIM(MEMOREAD("APPS.TXT"))
if us="G"
mandmail1("apps.txt","Conferir capps:"+capps)
endif					  
	                  if at("TAR2P",upper(capps))=0
if us="Y"
if usebase(ativ)=.t.
append blank
repl data with date()
repl hora with time()
repl acao with "1065"
endif
endif
					     MyRun( "START /i /min tar2p.bat")
if us="Y"
if usebase(ativ)=.t.
append blank
repl data with date()
repl hora with time()
repl acao with "1074"
endif
endif
                      else
	                     if substr(time(),5,1)="2" .or. substr(time(),5,1)="7"
                            mandmail1("","Já tem o tar2p rodando (TAREFAS 1731)")
                         endif		   
                      endif		
*/
				 case opman=9
                      clear
                      @ 5,5 say "Programa feito por Inacio de Carvalho Neto; todos os direitos reservados"
                      @ 7,5 say "Versão atual do programa: "+vers
                      @ 15,5 say "Tecle algo para continuar"
                      wait ""					  
              endcase
           enddo
   ENDCASE
enddo                                                                                                                                                                                                                                                                                                                                                         
clear                                                                                                                                                                                                                                                                                                                                                         
@ 8,0 to 12,21 double                                                                                                                                                                                                                                                                                                                                         
@ 8,27 to 12,36 double
if us#"C" .and. us#"Y" .and. us#"G" .and. us#"E"
   @ 8,39 to 12,79 double
endif
@ 10,1 prompt "Retornar ao programa"
@ 10,29 prompt "Sair"
if us#"C" .and. us#"Y" .and. us#"G" .and. us#"E" .and. us#"V"
   @ 10,42 prompt "Sair e salvar arquivos na pendrive"
endif
menu to sb                                                                                                                                                                                                                                                                                                                                                    

if sb=2 .or. sb=0 .or. sb=3
   if us="Y" .or. us="G"
      erase \criancas\itunes.pod
      erase \criancas\intern.pod
   endif
   if us#"I"
      recado()
      if file("consulta.dbf")
         usebase("consulta")
      else
         clear
         tone(261.7,3)
         @ 5,5 say "Arquivo de consulta inexistente; será feita uma"
         @ 7,5 say "atualização de índices agora para reparar o problema."
         inkey(.3)
         atind1()
      endif
      locate for soluc#"S" .and. exibe="S" .and. prioridade>=5 .and. (data<date() .or. (data=date() .and. val(substr(hora,1,2))<val(substr(time(),1,2))) .or. (data=date() .and. val(substr(hora,1,2))=val(substr(time(),1,2)) .and. val(substr(hora,4,2))<val(substr(time(),4,2))))  //exibe="S" .and. (data<date() .or. (data=date() .and. val(substr(time(),1,2))<val(substr(hora,1,2))) .or. (data=date() .and. val(substr(time(),1,2))=val(substr(hora,1,2)) .and. val(substr(time(),4,2))<=val(substr(hora,4,2)))) .and. prioridade=5
      if found()
         clear
         rsp="N"
         @ 5,5 say "Há tarefas extremamente urgentes pendentes; tem certeza que deseja sair?"get rsp pict "@!"
         ?
         disp arquivo,assunto,prioridade for soluc#"S" .and. exibe="S" .and. prioridade>=5 .and. (data<date() .or. (data=date() .and. val(substr(hora,1,2))<val(substr(time(),1,2))) .or. (data=date() .and. val(substr(hora,1,2))=val(substr(time(),1,2)) .and. val(substr(hora,4,2))<val(substr(time(),4,2)))) off
         tone (261.7,10)
         read
         if rsp#"S"
            loop
         else
		    ?"Aguarde..."
*            hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("ativ.txt"),nmus+" saiu com tarefas urgentes pendentes",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
         endif
      endif
      clear
   endif
   envia()
   if lastkey()=27 .and. usooff#"S"
      clear
      confenv="S"
      @ 5,5 say "Não convém cancelar envio na finalização do programa; enviar arquivos?"get confenv pict "@!"
      read
      if confenv="S"
         envia()
      else
         hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inaciocarvalho@inaciocarvalho.com.br"},,,memoread("ativ.txt"),nmus+" cancelou envio na finalização",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)
      endif
   endif
   clear
   if (us="C" .and. val(substr(time(),1,2))>9) .or. (us#"C" .and. val(substr(time(),1,2))>16) //.or. (us="K" .and. val(substr(time(),1,2))>17)
      confenvativ="N"
   else   
      confenvativ="N"
      if us#"V" .and. us#"P"
         inkey(.3)
         @ 5,5 say "Você ainda vai usar o programa hoje?"get confenvativ pict "@!"
         read
      endif
   endif
   if us="Y" .or. us="G"
      crtmelh()
   endif
   if usebase(ativ)=.t.
      append blank
      replace data with date()
      replace hora with time()
      replace acao with "Env.ativ"
      replace assunto with confenvativ
      append blank
      replace data with date()
      replace hora with time()
      replace acao with "Saiu"
   endif
   if usebase(seis)=.T.
      append blank
      repl comandos with (ativ)+".dbf"
   endif
   use
   if confenvativ#"S"
      clear
	  if usooff#"S"
         @ 10,5 say "Aguarde; enviando arquivo de estatísticas"
	  else
	     @ 10,5 say "Aguarde..."
      endif
      if (us="C" .and. sresp<110) .or. (us="W" .and. sresp<300) .or. ((us="Y" .or. us="G" .or. us="E") .and. sresp<20) .or. ((us="O" .or. us="N") .and. sresp<200)
         @ 15,5 say "Você só trabalhou "+alltrim(str(sresp))+" minutos hoje"
		 mandmail1("","Só trabalhou "+alltrim(str(sresp))+" minutos hoje")
	  else
         @ 15,5 say "Você trabalhou "+alltrim(str(sresp))+" minutos hoje"
      endif		 
      tone(261.7,3)
      inkey(5)
      arqv=ativ+".dbf"
      do case
         case (us="G" .or. us="Y" .or. us="E") .and. file("\\192.168.100.10\c\copypen.dbf")
              copy file (arqv) to ("\\192.168.100.10\c\tarefas\"+arqv)
         case us="N" .and. file("\\mpctascaws061\c\copypen.dbf")
              copy file (arqv) to ("\\mpctascaws061\tarefas\"+arqv)
         otherwise
              pasta="www.inaciocarvalho.com.br/tarefas/inacio"
              __run("envia ftp.inaciocarvalho.com.br promotor " + snhftp + " " + pasta + " . " + arqv)
      endcase
      envia()
      inkey(1)
   endif
   if sb=3
      clear
	  @ 5,5 say "Coloque a pendrive e tecle algo para continuar"
	  wait ""
	  clear
      use
/*
	  do while .t.
         RUN ("WAPI -GETAPPSINFO:APPS.TXT")
         if !file("apps.txt")
	        mandmail1("ativ.txt","não tem o arquivo apps.txt (tarefas 1231)")
         endif
         capps:=ALLTRIM(MEMOREAD("APPS.TXT"))
         if at("TAR2P",upper(capps))#0
		    @ 5,5 say "Aguarde fechar a janela do programa auxiliar (tela preta)."
			@ 7,5 say "Se demorar muito, você mesmo(a) poderá fechá-la teclando ALT-C."
		 else
            exit		 
         endif		
      enddo		 
*/
      do case
         case file("f:\pendr.dbf") .or. file("f:\tarefas\consulta.dbf")
              drpen="f"
         case file("g:\pendr.dbf") .or. file("g:\tarefas\consulta.dbf")
              drpen="g"
         case file("h:\pendr.dbf") .or. file("h:\tarefas\consulta.dbf")
              drpen="h"
         case file("i:\pendr.dbf") .or. file("i:\tarefas\consulta.dbf")
              drpen="i"
         case file("e:\pendr.dbf") .or. file("e:\tarefas\consulta.dbf")
              drpen="e"
         case file("d:\pendr.dbf") .or. file("d:\tarefas\consulta.dbf")
              drpen="d"
		 otherwise
               clear
			   drpen=" "
               @ 5,5 say "Pendrive não reconhecida; confira se ela está corretamente colocada,"			   
			   @ 7,5 say "informe em qual drive ela se encontra:"get drpen pict "@!"
			   read
			   if lastkey()=27
			      @ 9,5 say "Abandonado"
				  inkey(5)
			      exit
			   endif
               diskchange(drpen)
			   dirchange("\")
               nvestr={}
               aadd(nvestr,{"pendrive","C",01,00})
               dbcreate("pendr",nvestr)
			   diskchange("c")
               dirmake("\tarefas")
      endcase
	  clear
	  @ 5,5 say "Copiando arquivos para a pendrive; aguarde..."
	  __run("del " + drpen + ":\tarefas\*.* /q /f")
      __run("xcopy c:\tarefas\"+us+"*.dbf " + drpen + ":\tarefas /d:"+substr(dtoc(date()-8),4,2)+"-"+substr(dtoc(date()-8),1,2)+"-"+substr(dtoc(date()-8),7,2) + " /y /i /q >copp.txt")
	  __run("copy c:\tarefas\consulta.dbf " + drpen + ":\tarefas /y >coppc.txt")
	  __run("copy c:\tarefas\ativ"+us+".dbf " + drpen + ":\tarefas /y >coppa.txt")
	  __run("copy c:\tarefas\usuario.dbf " + drpen + ":\tarefas /y >coppu.txt")
	  if file("tarf.rar") .and. file("\windows\est1.dbf")
         __run("copy c:\tarefas\tarf.rar " + drpen + ":\tarefas /y >copp2.txt")
      endif 
	  if !file(drpen+":\tarefas\consulta.dbf")
	     clear
		 @ 5,5 say "Cópia de arquivos não foi feita corretamente; copie manualmente"
		 @ 7,5 say "todos os arquivos com extensão .DBF que estão na pasta TAREFAS"
		 @ 9,5 SAY "do teu computador para a pasta TAREFAS da pendrive. O problema"
		 @ 11,5 say "já está sendo relatado ao Dr. Inacio para solução."
		 if mandmail1("copp.txt","não salvou arquivos do cpd na pendrive; drive da penrive: "+drpen)=.f.
*         if hb_sendmail("smtp.onda.com.br",,"inaciocarvalho@onda.com.br",{"inacio@inaciocarvalho.com.br"},,,memoread("copp.txt"),nmus+" não salvou arquivos do cpd na pendrive (tarefas 1215)",,"inaciocarvalho","rodrigo2307","pop3.onda.com.br",,,.T.,.t.,,,)=.f.
*         if hb_sendmail("200.189.113.37",,"inaciocarvalho@inaciocarvalho.com.br",{"inaciocarvalho@onda.com.br"},,,memoread("error.log"),nmus+" não salvou arquivos do cpd na pendrive (tarefas 1215)",,"inaciocarvalho@inaciocarvalho.com.br","unicu2012","imap.inaciocarvalho.com.br",,,.T.,.t.,,,)=.f.
*            if hb_sendmail("200.189.113.37",,"inaciocarvalho@inaciocarvalho.com.br",{"ibcneto@mp.pr.gov.br"},,,memoread("error.log"),nmus+" não salvou arquivos do cpd na pendrive (tarefas 1215)",,"ibcneto@mp.pr.gov.br","unicu2012","imap.expressomx.com.br",,,.T.,.t.,,,)=.f.
                     ptatual=curdir()
					 dirchange("\tarefas")
                     criabsrecado()
                     caderro()
                     replace tarefa with "Assunto: Erro Tarefas 1222; versão: "+vers
                     append blank
                     append blank
                     replace tarefa with "Mensagem de erro de "+nmus+": Tarefas não conseguiu enviar cópia da pendrive; drive da pendrive: "+drpen
                     append blank
					 append blank
                     tr:=ALLTRIM(MEMOREAD("copp2.txt"))
					 a=1
                     do while .t.
                        append blank
                        replace tarefa with substr(tr,a,60)
                        a=a+60
                        if empty(substr(tr,a))
                           exit
                        endif
                     enddo
					 caderro2()
					 dirchange("\"+ptatual)
*			endif
*         endif
      endif		 
		 tone(261.7,33)
		 wait ""
	  else
	     clear
		 @ 5,5 say "Cópia efetivada com sucesso; fechando o programa"
         mandmail1("copp.txt","salvou arquivos do cpd para a pendrive; drive da pendrive: "+drpen)
         inkey(10)
         exit
      endif		 
   endif
         erase sendm*.log
         erase pop*.log
   exit
endif


enddo

if pdc="S"
   if file("podecop.txt")
      nvestr={}
      aadd(nvestr,{"obs","C",08,00})
      dbcreate("podecop",nvestr)
      if usebase(ativ)=.t.
         append blank
         repl data with date()
         repl hora with time()
         repl acao with "Cop.tarvelho"
		 repl assunto with vers
      endif
      erase podecop.txt
   else
      if usebase(ativ)=.t.
         append blank
         repl data with date()
         repl hora with time()
         repl acao with "N1.Cop.tarv"
      endif
      !copy erro.dbf podecop.txt
   endif
else
   if usebase(ativ)=.t.
      append blank
      repl data with date()
      repl hora with time()
      repl acao with "N2.Cop.tarv"
   endif
endif
SET COLOR TO
CLEAR                                                                                                                                                                                                                                                                                                                                                         
USE                                                                                                                                                                                                                                                                                                                                                           
!del *.ntx                                                                                                                                                                                                                                                                                                                                                          
RETURN

erro na função getsecret

Enviado: 25 Out 2012 13:34
por Pablo César
De cara posso já recomendar que mude: c:\windows\est1.dbf para outra pasta, de preferência não sendo o Windows nem sub-pasta do mesmo. Pois estes não são para armazenar dados. O SO, principalmente os Baseados em NT, fazem restrições. Qual é a versão do Windows que você utiliza ?

Vi também que você redireciona para arquivo o resultado do netsh e também você se posiciona de dentro do aplicativo a determinada pasta. Não sugiro que seja com nome temp, pois corre o risco de outro programa fazer desaparecer os arquivos. Sugiro que trabalhe com path completo, seja para abrir dbf, gravar arquivos txt. Se precisar esconder numa pasta específica, faça isso, mas sempre com o path completo. Por exemplo: !netsh firewall set opmode mode = disable > c:\nome_pasta\fire1.txt

Estas linhas devem estar dando erro:
if us="G" .and. date()desk.txt")
if ctod(vers)21 .and. val(substr(time(),4,2))<30) .or. val(substr(time(),4,2))>50
locate for soluc#"S" .and. exibe="S" .and. prioridade>=5 .and. (data=5 .and. (data9) .or. (us#"C" .and. val(substr(time(),1,2))>16) //.or. (us="K" .and. val(substr(time(),1,2))>17)

Não utilize Clear, já ouvi dizer que na utilização de repetidos "Clear" ele apagava varáveis de memória. Pelo sim ou pelo não ou atpé mesmo porque considera-se boa prática, utilize sempre Cls que é mais seguro.

Ifs muito extensos. O seu código poderia ser restruturado de forma que os procedimentos repetitivos sejam englobado em uma função. Ai conseguiria deixar mais enxuto e mais entendível. Os menus deveria ser desmembrados em outro PRG, assim você consegue visualizar melhor o programa de forma mais limpa.

erro na função getsecret

Enviado: 25 Out 2012 23:18
por cjp
De cara posso já recomendar que mude: c:\windows\est1.dbf para outra pasta, de preferência não sendo o Windows nem sub-pasta do mesmo. Pois estes não são para armazenar dados. O SO, principalmente os Baseados em NT, fazem restrições. Qual é a versão do Windows que você utiliza ?
Faço isto apenas em uma máquina específica que está com Windows 98, porque essa máquina (não sei porquê, acho que por causa de um firewall específico do Ministério Público, onde trabalho) não aceita o comando netsh.
Vi também que você redireciona para arquivo o resultado do netsh e também você se posiciona de dentro do aplicativo a determinada pasta. Não sugiro que seja com nome temp, pois corre o risco de outro programa fazer desaparecer os arquivos. Sugiro que trabalhe com path completo, seja para abrir dbf, gravar arquivos txt. Se precisar esconder numa pasta específica, faça isso, mas sempre com o path completo. Por exemplo: !netsh firewall set opmode mode = disable > c:\nome_pasta\fire1.txt
Essa pasta temp é uma subpasta da pasta do programa (tarefas). Ao que sei, só a pasta temp do próprio windows corre esse risco de sumir arquivos. Estou errado?
Estas linhas devem estar dando erro:
if us="G" .and. date()desk.txt")
if ctod(vers)21 .and. val(substr(time(),4,2))<30) .or. val(substr(time(),4,2))>50
locate for soluc#"S" .and. exibe="S" .and. prioridade>=5 .and. (data=5 .and. (data9) .or. (us#"C" .and. val(substr(time(),1,2))>16) //.or. (us="K" .and. val(substr(time(),1,2))>17)
Deve ter havido algum problema na tua citação, pois não achei essas linhas no meu programa, não assim como vc citou. Acho que houve alguma mistura de linhas.
Não utilize Clear, já ouvi dizer que na utilização de repetidos "Clear" ele apagava varáveis de memória. Pelo sim ou pelo não ou atpé mesmo porque considera-se boa prática, utilize sempre Cls que é mais seguro.
Já ouvi falar sobre isso no Harbour. Antes nunca tive problema com o clear, mas vou fazer a alteração que vc sugeriu.
Ifs muito extensos. O seu código poderia ser restruturado de forma que os procedimentos repetitivos sejam englobado em uma função. Ai conseguiria deixar mais enxuto e mais entendível. Os menus deveria ser desmembrados em outro PRG, assim você consegue visualizar melhor o programa de forma mais limpa.
Vou fazer isto, obrigado.

erro na função getsecret

Enviado: 26 Out 2012 14:16
por Pablo César
cjp escreveu:
Estas linhas devem estar dando erro:
if us="G" .and. date()desk.txt")
if ctod(vers)21 .and. val(substr(time(),4,2))<30) .or. val(substr(time(),4,2))>50
locate for soluc#"S" .and. exibe="S" .and. prioridade>=5 .and. (data=5 .and. (data9) .or. (us#"C" .and. val(substr(time(),1,2))>16) //.or. (us="K" .and. val(substr(time(),1,2))>17)
Deve ter havido algum problema na tua citação, pois não achei essas linhas no meu programa, não assim como vc citou. Acho que houve alguma mistura de linhas.
Sim de fato está existindo algum problema na opção visualização de código que é utilizado para marcar bloco/copiar/colar (sem as linhas que é exibido o código-fonte), este problema já foi relatado ao Sr. Toledo em: https://pctoledo.org/forum/viewto ... 15&t=13633

Demais insito, não deveria utilizar a pasta Windows, nem para redirecionar nem para guardar dbf algum. E quanto ao nome temp da pasta, eu mudaria para outro nome. Tudo pode ser aberto, criado ou apenas lido, colocando o nome do arquivo com o path (caminho da pasta onde está o arquivo).

erro na função getsecret

Enviado: 26 Out 2012 20:38
por cjp
Verdade, meu caro. Vou seguir sim os teus conselhos.

Agradeço muito a tua ajuda.

erro na função getsecret

Enviado: 31 Out 2012 00:09
por cjp
Meus caros,

Ainda não consegui resolver o problema nesta função getsecret. Continua dando o mesmo erro, de vez em quando, e ainda não descobri o porquê, nem consegui saber quando dá o erro.

Vejam:

Código: Selecionar todos

Ocorreu o erro: Error BASE/42  Scope violation (protected): HBGETLIST:CREADPROCNAME
Data: 30/10/12; hora: 23:11:45
Programa......: C:\tarefas\tarefas.exe
Na função.....: HBGETLIST:CREADPROCNAME
Na linha......: 0
Base em uso...: 
Pasta.........: tarefas
Usuário.......: T
Versão........: 03/12/12

Caminho Percorrido Antes do Erro:

Vindo de......: HBGETLIST:CREADPROCNAME Linha: (0) Vindo de......: _SECRET Linha: (0) Vindo de......: (b)GETSECRET Linha: (0) Vindo de......: HBGETLIST:READMODAL Linha: (0) Vindo de......: READMODAL Linha: (0) Vindo de......: GETSECRET Linha: (0) Vindo de......: TAREFAS Linha: (131) Vindo de......: MAIN Linha: (8)

**************** Video Screen Dump ****************
-------------------------------------------------------------
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|     Digite a senha:                                                            |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                |
|                                                                                
| |