Pular para o conteúdo principal

Postagens

Mostrando postagens de fevereiro, 2009

Postagem em destaque

BlackTDN :: Social :: Rifa Festival da Arte Capoeira Projeto Eu Sou Ninja

Angariar fundos para cobrir os custos logísticos do "Festival da Arte Capoeira" e apoiar o projeto Eu Sou Ninja em sua missão de promover a integração social e cultural na comunidade de Jacaraípe. Com a criação da rifa, buscamos envolver a comunidade de forma ativa no financiamento do evento, permitindo que todos contribuam para o sucesso do festival e para a continuidade das atividades do projeto. Prêmio: Copia da minha biblioteca pessoal de AdvPL/TLpp ..etc Participe da Rifa Eu já contribui. Só falta você! ```cmd Pasta de C:\GitHub\naldodj-tlpp 13/04/2024 19:17 . 19/03/2024 13:49 .. 05/01/2024 12:22 2.742 .gitattributes 14/11/2023 16:02 83 .gitignore 02/12/2023 20:08 .vscode 05/01/2024 12:05 bin 13/04/2024 19:18 4.121 ChangeLog.txt 27/12/2023 02:05 include 14/11/2023 16:02 27.030 LICENSE.txt 14/11/2023 16:02 0 makepatch.lst 14/11/2

Protheus :: Usando Taskkill para forçar o reinicio dos serviços

Às vezes faz-se necessário reiniciar os serviços do protheus mas através do "serviço" do Windows® isso se torna impossível pois podem existir muitos processos pendentes a interrupção dos serviços . Então podemos fazer uso da ferramenta "taskkill" que no exemplo abaixo está em um "script" em Windows® PowerShell®. Nesse exemplo existem quatro serviços do protheus sendo executados com os seguintes nomes: P10Server5110, P10Server5210, P10Server5310 e P10Server5410 onde P10Server corresponde ao Prefixo do serviço e 5110 a 5410 às portas em que eles escutam. $IniPort = 5110 $EndPort = 5911 $PrefixProcess = "P10Server" $NameProcess = "" for ( $Port = $IniPort ; $Port -le $EndPort ; $Port+=100 ) { $NameProcess = $PrefixProcess+$Port if ( get-service | where { $_.status -eq "stopped" -and $_.name -eq $NameProcess} ) { while ( get-service | where { $_.status -eq "stopped" -and $_.name -eq $NameProcess

Protheus :: Obtendo Array com as "Internal Functions" usando __FunArr()

Semelhante à __ClsArr() [ que retorna as classes para uso em Advpl ], __FunArr() retornará as "Internal Functions" funções essas que não são escritas em Advpl mas sim em C++ ou Assembler. Sua sintaxe é muito simples: __FunArr( ) -> aFunArray. Ex.: Local aIntFunctions := __FunArr () e terá o seguinte retorno ao avaliarmos a variável aInfFunctions: aIntFunctions[1][1] -> AnsiToEem //Nome da Função aIntFunctions[1][2] -> CR //Parâmetro da Função. A pilha de "Internal Functions" varia de acordo com novas implementações. Abaixo a saída com todas as "Internal Functions" constantes até a Build 7.00.080806P - Nov 4 2008 - 13:18:43. O Primeiro elemento corresponde ao nome da função e o segundo elemento aos seus parâmetros. A primeira vista os parâmetros, para um leigo, parecerão ininteligíveis, pois não temos sua declaração formal mas apenas o seu tipo. Mas com um pouco de paciência e experiência no uso das funções poderemos deduzí-los. Por Exeplo, sabe

Protheus :: Obtendo Array das Classes de Objetos com __ClsArr()

Se deseja obter as Classes para uso em Advpl utilize a função __ClsArr(). _Ela retornará um array multidimensional com todas as classes que poderão ser utilizadas em Advpl. No exemplo que postei sobre " Repositório Auxiliar " utilizei essa função para retornar as informações à respeito da classe "RPO". Sua sintaxe é muito simples: __ClsArr( ) -> aClassArray. Ex.: Local aClassesArray := __ClsArray() No Retorno de __ClsArray() obteremos um array com todas as classes, seus "membros", seus "métodos" e "parâmetros dos métodos". O único problema é que os parâmetros corresponderão ao seu tipo e não à sua descrição formal (o que dificulta, um pouco, ao leigos, saber o que passar para eles). Usando como exemplo o array atribuido à variável aClassesArray teremos, para o elemento 4 as seguintes informações: aClassesArray[4] //Informações da classe RPO aClassesArray[4][1] //RPO que refere-se ao nome da classe aClassesArray[4][2] //Esse elemento

Protheus :: Obtenha os parâmetros formais com GetFuncPrm

Utilizando GetFuncPrm( cFunction ) para retornar os parâmetros de uma função em Advpl. Se você tem dúvidas sobre quais parâmetros formais uma função em Advpl possui, utilize GetFuncPrm( cFunction ) para obtê-los. GetFuncPrm() retorna um array com todos os parâmetros formais da função. Ex.: Local aPrmFunc := {} IF FindFunction( "SomaHoras" ) aPrmFunc := GetFuncPrm( "SomaHoras" ) aEval( aPrmFunc , { |cPrm| ConOut( cPrm ) } ) //-> nHr1 , nHr2 EndIF O problema é que GetFuncPrm() só retorna os parâmetros de funções em Advpl, não retorna as "Internal Functions". Por exempo, não posso utilizar GetFuncPrm() para retornar os parâmetros da função aEval(), pois aEval() não está escrita em Advpl mas sim em C++ e em função disso, não consta na pilha de funções Advpl. Na realidade, quase toda função que possa ser localizada por FindFunction( cFunction ) pode ter os seus parâmetros formais retornados pela GetFuncPrm(). Além de não retornar os parâmetros de "In

Protheus :: Repositório Auxiliar

Neste artigo vou discursar um pouco sobre o "Repositório de Objetos Auxiliar" do Protheus. A idéia do "Repositório Auxiliar" surgiu para otimizar o processo de execução do "Roteiro de Cálculo" do SIGAGPE. As fórmulas e os roteiros do GPE são todos "interpretados" durante a sua execução, tornando o processo lento. Sendo assim a Totvs/Microsiga teve a brilhante idéia de criar um "Repositório Auxiliar" para que as Fórmulas e Roteiros de Cálculo fossem compilados. Esse novo esquema para o Roteiro de Cálculo do GPE só está disponível para os países que não o Brasil (Chile, México, Portugal, etc.), acredito que futuramente a Totvs/Microsiga disponibilize também para o Brasil. A boa notícia é que o "Repositório Auxiliar" não serve apenas para o módulo GPE, ele pode ser utilizado em qualquer lugar onde você possa estar colocando uma "macro execução" ou uma "User Function". O "Repositório Auxiliar" está di