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.