Testar a pilha de chamadas com as funções AtIsRotina e FWIsInCallStack – Maratona AdvPL e TL++ 049

Nesse vídeo demonstraremos em como utilizar as funções AtIsRotina e FWIsInCallStack, sendo que ambas validam se uma função esta na pilha de chamadas.

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe049
Exemplo de função que verifica se esta sendo acionada por alguma função da pilha de chamadas
@type Function
@author Atilio
@since 01/12/2022
@see https://tdn.totvs.com/pages/releaseview.action?pageId=161349910
@obs 
    Função AtIsRotina
    Parâmetros
        + Indica o nome da função a ser procurada na pilha de chamadas
    Retorno
        + Retorna .T. se encontrou ou .F. se não encontrou

    Função FWIsInCallStack
    Parâmetros
        + Indica o nome da função a ser procurada na pilha de chamadas
    Retorno
        + Retorna .T. se encontrou ou .F. se não encontrou

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe049()
    Local aArea      := FWGetArea()
    Local cFuncBusca := ""

    //Buscando pela AtIsRotina (só funciona se tudo tiver maiúsculo)
    cFuncBusca := "U_ZMINIFORM"
    If AtIsRotina(cFuncBusca)
        FWAlertInfo("Foi acionado pela função - " + cFuncBusca, "Exemplo AtIsRotina")
    EndIf

    //Buscando pela FWIsInCallStack (independe se for maiúscula ou minúscula)
    cFuncBusca := "u_zMiniForm"
    If FWIsInCallStack(cFuncBusca)
        FWAlertInfo("Foi acionado pela função - " + cFuncBusca, "Exemplo FWIsInCallStack")
    EndIf

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação