Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Estado
subtletrue
colourBlue
titletlppCore

Permite executar uma função tlpp como nome longo em qualquer fonte PRW com segurança.


Sintaxe
Bloco de código
languagecpp
tlpp.call( < cFunction >, [ xParms ] )
Parâmetros
NomeTipoDescriçãoObrigatórioReferência
cFunctioncharacterNome da função a ser executada. Ex: "funcao_com_nome_longo"X
xParmsvariantParâmetros que serão passados para a função. Ex: tlpp.call"funcao_com_nome_longo", nI, 5, , "teste", @cRet"funcaocomnomelongo",nI,5,,"teste",@cRet

Retorno
NomeTipoDescrição
xRetVariantConteúdo e tipo retornado varia conforme implementado na função que está sendo chamada.
Observações

O nome da função sempre é uma string e se não for passado parâmetros extras (xParms), pode já conter toda a chamada possível.
Ex:
tlpp.call("funcao_com_nome_longo(5, 'teste')"), porém se forem passados parâmetros para a função eles serão prioritariamente usados e serão ignorados os que estiverem no nome da função.
tlpp.call("funcao_com_nome_longo(5, 'teste')", cParam1) -> será executado como: funcao_com_nome_longo(cParam1).


Exemplos
Bloco de código
languagecpp
function u_executaFuncao()
  Local lFound := .F.
  Local cFunction
  Local xRet
  Local cVar1
  Local cVar2
  Local cRet
  Local aMessages

  //---------------------------------------------------------------------------------------------------
  // Exemplo de função que existe
  cFunction := "tlpp.environment.getIncludesTLPP"

  lFound := tlpp.ffunc( cFunction )  // Se compilado em um fonte TLPP ou PRW = .T. (verdadeiro pois a função existe)
  ConOut( 'Function [' + cFunction + '] ' + iif(lFound,'','NOT ') + 'found!' )

  // Se a função existe, executa
  if ( lFound )
    xRet := tlpp.call( cFunction, @cRet, @aMessages )  // executa a função
    ConOut( 'Function [' + cFunction + '] result: ' + cValToChar(xRet) )
  endif

  //---------------------------------------------------------------------------------------------------
  // Crie a sua função com nome longo ("sua_funcao_com_nome_longo") em um fonte TLPP
  cFunction := "sua_funcao_com_nome_longo"

  lFound := tlpp.ffunc( cFunction )
  ConOut( 'Function [' + cFunction + '] ' + iif(lFound,'','NOT ') + 'found!' )

  // Se a função existe, executa
  if ( lFound )
    xRet := tlpp.call( cFunction )  // executa a função - sem parâmetros
    ConOut( 'Function [' + cFunction + '] result: ' + cValToChar(xRet) )

    xRet := tlpp.call( cFunction + "(7, 'ABC')" )  // executa a função como string
    ConOut( 'Function [' + cFunction + '] result: ' + cValToChar(xRet) )

    xRet := tlpp.call( cFunction, 32, "string 1", 7, cVar1, @cVar2, .T. )  // executa a função - com parâmetros
    ConOut( 'Function [' + cFunction + '] result: ' + cValToChar(xRet) )
  endif
  //---------------------------------------------------------------------------------------------------

return xRet
Abrangência

05/2023