Olá pessoal…
Hoje vou mostrar como gravar a Pilha de chamadas em um arquivo .txt via AdvPL.
Essa função tem como objetivo, trazer a FunName executada (Função do Menu), e a lista de todas as ProcName (Funções chamadas pela Função do Menu até a função atual).
Abaixo um print da pilha de chamadas, de uma rotina executada no fórmulas.
Abaixo o código fonte da rotina.
//Bibliotecas
#Include "Protheus.ch"
//Constantes
#Define STR_PULA Chr(13)+Chr(10)
/*/{Protheus.doc} zSalvaProc
Função que salva as chamadas dos ProcNames em um arquivo
@author Atilio
@since 10/12/2014
@version 1.0
@param cArquivo, Caracter, Caminho do arquivo a ser gerado
@example
u_zSalvaProc("C:\TOTVS\arquivo.txt")
/*/
User Function zSalvaProc(cArquivo)
Local aArea := GetArea()
Local nCont := 1
Local nHdl := 0
//Gerando o arquivo e pegando o handle (ponteiro)
FErase(cArquivo)
nHdl := FCreate(cArquivo)
fWrite(nHdl, 'FunName: '+FunName()+STR_PULA)
//Enquanto houver procname que não estão em branco
While !Empty(ProcName(nCont))
//Escrevendo o número do procname e a descrição
fWrite(nHdl, 'ProcName > '+StrZero(nCont, 6)+' - '+ProcName(nCont)+STR_PULA)
nCont++
EndDo
//Fechando o arquivo
FClose(nHdl)
RestArea(aArea)
Return
Obs.: Se quiser testar se uma função está na pilha de chamadas, utilize a IsInCallStack().
Bom pessoal, por hoje é só.
Abraços e até a próxima.
