Do with

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

Moderador: Moderadores

Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

Do with

Mensagem por Paulo Pereira »

Ola..
Sei que no harbour nao se pode usar do whit, devesse chamar a funcao.. mas nesta rotina abaixo é parte de uma funcaao que trata da impressao.
vrotina é o nome da rotina a ser chamada. pode assumir varios nomes de funcoes:
do relgrupos with 1,2
do relmarcas with 2,1
entao sempre preciso usar a macro & (e comercial) nao tem um equivalente no harbour ??
podeia fazer
if vrotina=''relgrupos'
relgrupos(1,2)
elseif vrotinta='relvendas'
relvendas(2,1)
elseif..
..
.,mas ai nao fica generica

Código: Selecionar todos

.
.
if vret=1  // tela arq
    do &(vrotina) with 1,vordem  // tela/arq
else
     if ligaimp(.t.)
          do &(vrotina) with 2,vordem
     endif
endif
.

alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Do with

Mensagem por alxsts »

Olá!

Modernize-se! Esqueça macro (E comercial), Do, Do With, variávais Public e Private...

Código: Selecionar todos

FUNCTION Main()

   _Execute_( 1, 2 )   

   _Execute_( 2, 1 )

   RETURN NIL
//-------------------------------------------------------------------------------------------
PROCEDURE _Execute_( nPar1, vOrdem )

   LOCAL abRotinas:= { { |x,y| RelGrupos( x,y ) }, { |x,y| RelVendas( x,y ) } }
 
   if vret=1  // tela arq
       Eval( abRotinas[ 1 ], nPar1, vOrdem )      // do &(vrotina) with 1,vordem  // tela/arq
   Else
      If LigaImp( .t. )
         Eval( abRotinas[ 2 ], nPar1, vOrdem )   // do &(vrotina) with 2,vordem
      Endif
   Endif 

   RETURN
//-------------------------------------------------------------------------------------------
[]´s
Alexandre Santos (AlxSts)
Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

Re: Do with

Mensagem por Paulo Pereira »

Valeu...
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Do with

Mensagem por alxsts »

Olá!

Paulo: desculpe se te assustei...

Resolveu o teu problema? Conte detalhes por favor.
[]´s
Alexandre Santos (AlxSts)
Paulo Pereira
Usuário Nível 2
Usuário Nível 2
Mensagens: 79
Registrado em: 28 Abr 2011 00:29
Localização: Joinville / SC

Re: Do with

Mensagem por Paulo Pereira »

Oi,
O valeu ai, foi sem sarcasmo..
agradeco a tua solucao.. depois acabei vendo que esta funcao era chamada umas 10 rotinas diferentes, entao acabei mudando a funcao para nao ter que usar o EVAL..
Mas agradeço a atencao..

Obrigado
Responder