Página 1 de 2

Função

Enviado: 29 Ago 2005 15:59
por david.miguel
Ola a todos,

Quero criar uma funcao que ira execultar as minhas funcao.
Segue exemplo:

If ExistFuncao("Qualquer_Funcao")
ExeculteFuncao("Qualquer_Funcao")
Endif

Obrigado

Enviado: 29 Ago 2005 16:07
por Clipper
Prezado Colega

Não sei se entendi direito, vc poderia ser mais explicíto ?

No aguardo.

:xau

Marcelo

Enviado: 29 Ago 2005 16:32
por david.miguel
Queria algo como um ExecBlock da funcao, aonde eu passo o nome da funcao e a funçao é execultada.

Espero que assim fique mais claro.

Antigamente utilizava algo como Eval, Aeval ou DbEval, mas me deu um branco e nao lembro de + nada.

Enviado: 29 Ago 2005 17:32
por software_facil
Prezado,

Partindo do fato que a roda já foi inventada, o melhor a fazer é usá-la, busque pela internet ou em literatura própria (livros) sobre code blocks.

Abraços

Enviado: 29 Ago 2005 18:48
por Jorge Adourian
Prezado, pensanso assim...Para que existe o Fórum ??????????????????????


Uma forma de fazer isto, seria receber um parametro chamado bloco e rodar ele se existir. Exemplo:

Código: Selecionar todos

IF .NOT. bloco==NIL
 EVAL(bloco)
ENDIF

Re: Função

Enviado: 29 Ago 2005 22:13
por Stanis Luksys
Olá,
david.miguel escreveu: If ExistFuncao("Qualquer_Funcao")
ExeculteFuncao("Qualquer_Funcao")
Endif
Só por curiosidade, qual seria a diferença entre chamar ExecuteFuncao(funcao) e funcao() ??

Se a questão for apenas testar a existencia da função eu faria como nosso amigo indicou, atribuindo a funçao a um Code Block. Aí bastaria usar Eval.

Enviado: 30 Ago 2005 07:04
por Visitante
Caro David...

Eu, pra ser sincero, não entendi nada do que você quer...

Você quer saber se a função existe? e isso em run-time?

Independente da forma, vc tem os fontes, e através deles você saberá se a função existe ou não...

Porque eu faria:
If existeFunco("CriaCadastro")
executa("CriaCadastro")
Endif

Se com base nos meus fontes eu tenho a plena certeza se CriaCadastro Existe ou não?

Seria o mesmo que fazer:
If 0=0
executa
endif

ou

if 0=5
executa
endif

Posso até crer que você possa querer disparar funções aleatórias de acordo com um pedido do usuário, mas verificar se ela existe é meio esquisito, não?

Se o seu problema está no input que esse usuário irá fazer, simplesmente crie um array com as funções que estão disponíveis e faça um achoice ou ligue cada função a um grupo de teclas através do set key.

Não sei se é realmente isso que você quer, mas estou tentando entender o que se passa... e pelo que pude entender, uma das formas mais normais de se fazer é assim.


Um Clip Abraço!

Enviado: 30 Ago 2005 07:36
por Clipper
Eu também ainda não consegui entender, ora se está nos fontes ela existe, senão não.
Você poderia explicar o motivo porque quer fazer isto, talvez haja um meio menos "diferente" de fazer o que você quer.

:% :)´

Até logo.

Marcelo

Enviado: 30 Ago 2005 08:53
por Marcos
Pode não ser o que estou pensando, eu tenho um problema sério que não vi ainda uma forma legal de resolver, atualmente tenho um programa comercial (Programa Padrão) em fase de desenvolvimento, em paralelo estou desenvolvendo um programa especifico para uma Transportadora, quando iniciei o programa para transportadora tive que copiar algumas funções do meu programa Comercial para o programa de Transportadora, a forma que eu achei de fazer isto, foi criando um diretório separado chamado Transpor e refazer os PRG'S novamente de acordo com as exigências da Transportadora, assim muitas vezes tém uma chamada de Função que ainda não existe, ou seja, existe mas está no Diretório do Programa Comercial, então dá a tela Vermelha de erro e o programa é abortado, seria talvez para não abortar o programa?
Independente disto, gostar de saber qual a melhor maneira de fazer isto? Como proceder o desenvolvimento de Programas com Segmento diferentes? Cada um em seu diretório? Cada um é um projeto?
Abraços,
Marcos.

Enviado: 30 Ago 2005 09:04
por Clipper
Prezado Marcos

Eu geralmente copio tudo para um novo diretório, pois acho muito mais fácil de gerenciar, porém as funções genéricas coloco-as todas em uma lib e desta forma ficam disponiveis para qualquer sistema.

Até logo.

Marcelo

Enviado: 30 Ago 2005 10:23
por david.miguel
O que quero fazer é criar um programa aonde nele tenha pontos aonde o meus clientes poderao criar certas rotinas para modificar o processo original do programa. E para isso eu preciso sempre verificar se estas rotinas estao ou nao no projeto. Elas podem ser chamadas se existirem, mas caso contrario, nao.

Vou tentar com o Eval. Mas queria a sintaxe dele e um exemplo se possivel ?

Outra coisa, vi que nos programas gerados pelo o Miro ou Gaspro, ele tem um gerador de relatorios aonde o usuario pode estar criando estes relatorios. Alguem sabe como ele faz para ler os dados que foram configurados para este relatorios ?

Obrigado

Enviado: 30 Ago 2005 11:17
por Jorge Adourian
Caros Colegas, pode até não ser o que o que o David queria, mas a minha resposta se baseia na seguinte situação:

OBS: Explico isto porque estou vendo que ningúem entendeu o porque alguem precisaria saber se um bloco existe ou não e se existir rodar ele.

Isto se usa muito (eu uso muito) quando se cria uma função genérica (normalmente se coloca ela numa LIB particular) para ser usada por vários Programas. Ocorre que cada Programa tem necessidades próprias e ao mesmo tempo necessidades comuns. A função genérica faz toda a parte comum e recebe um bloco (ou mais) (com ou sem parametros) para sua necessidade particular.

Exemplo real: Na função DBEDIT existe um parametro OPCIONAL que é o nome da função do usuário, pois bem é exatamente ai que se usa este tal IF sugerido para ver se foi passado o parametro OPCIONAL.

Apenas que, como o DBEDIT é uma função de compatibilidade ela ainda usa nome de função tipo Caracter e não Bloco de Código, o que não é mais recomendado hoje em dia.

Acredito que depois disto ficará mais claro o porque da questão.

Enviado: 30 Ago 2005 11:28
por Clipper
Ah !

Agora !

Agora é que eu não entendi nada mesmo !

:xau

Desisto desse tópico...

Fui...

Enviado: 30 Ago 2005 13:18
por Stanis Luksys
:-O

uahuahahuahushauhhau

Re: Função

Enviado: 30 Ago 2005 17:39
por anacatacombs
Peraí.
Dexa eu ver se entendi..
Tá lá o cliente....
E o cliente pode criar funções que, de algum modo, podem modificar o funcionamento do programa?
E antes de executar a tal da função, tu precisa saber se ela existe?
é isso?
O.o