Pular para o conteúdo principal

Postagens

Mostrando postagens de agosto, 2010

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 :: Multiplicando Números Absurdamente Grandes ( Método da Gelosia )

É sabido que no Protheus existe uma limitação, imposta pelo pessoal de tecnologia, no que diz respeito ao tamanho dos números e nas operações que se podem realizar sobre eles. Essa limitação fez com que criassem a função MathC  que realiza operações matemáticas usando "strings". Dependendo do tamanho do número, o retorno de MathC talvez não seja o que você espera. Nesse caso, poderá recorrer à função MultStr(cNum1,cNum2), criada pelo "Automan" vulgo, Júlio Louco. Ela também faz a multiplicação usando "strings" numéricas, e, acredito eu, que ele tenha usado o Método da Gelosia para esse fim. Mas afinal, o que é o Método da Gelosia? Um Pouco de História: "Os matemáticos hindus desenvolveram um método de multiplicação através de tábuas quadriculadas. Mais tarde os árabes o levaram para a Europa e ficou conhecido como Método da Gelosia" ( fonte: Blog da Professora Ju ). Para maiores informações sobre o "Método da Gelosia" co

Protheus :: Dica de Otimização de Código ADVPL

Nesses meus anos como desenvolvedor Advpl tenho me deparado com absurdos de códigos como o fragmento do modelo abaixo: 1: dbSelectArea ( "SRA" ) 2: dbSetOrder ( 1 ) 3: dbGoTop ( ) 4: While ! Eof ( ) . and . xFilial ( "SRA" ) = = RA_FILIAL 5: cSRAMat : = RA_MAT 6: dbSelectArea ( "SRB" ) 7: dbSetOrder ( 1 ) 8: dbGoTop ( ) 9: dbSeek ( xFilial ( "SRB" ) + cSRAMat ) 10: IF ! Found ( ) 11: dbSelectArea ( "SRA" ) 12: dbSkip ( ) 13: Loop 14: EndIF 15: While ! Eof ( ) . and . xFilial ( "SRB" ) = = RB_FILIAL . AND . RB_MAT = = cSRAMat 16: //Pega os Dependentes 17: dbSelectArea ( "SRB" ) 18: dbSkip ( ) 19: End While 20: dbSelectArea ( "SRA" ) 21: dbSkip ( ) 22: End While Que se reescrito, pensando em reduzir a quantidade de linhas do programa e visando, principalmente, a otimização do processo, teríamos algo como: 1: SRA - > (

Protheus :: Curiosidade Matemática (Números Perfeitos)

O ADVPL não é uma linguagem puramente matemática e possui certa limitação em sua precisão numérica. Em função dessa limitação, o maior "Numero Perfeito" calculado em ADVPL será um número igual ou menor ao obtido através da operação: 2^56 = 72057594037927936. Lembrando que 72057594037927936 não é um "Número Perfeito". Mas afinal, o que é um "Número Perfeito"? "Número Perfeito" é um número natural cuja soma de seus divisores próprios (excluído o próprio número) coincide com o número. Ex.: Numero 6: Divisores: 1,2,3 Soma dos Divisores: 1+2+3=6 Numero 28 Divisores: 1,2,4,7,14 Soma dos Divisores: 1+2+4+7+14=28 Numero:496 Divisores: 1,2,4,8,16,31,62,124,248 Soma dos Divisores: 1+2+4+8+16+31+62+124+248=496 O Maior "Número Perfeito" conhecido é: 2.305.843.008.139.952.128 A título de curiosidade faremos um programa em ADVPL que verifica se um número é um "Número Perfeito". É algo que eu faria usando C ou C++ ou uma

Protheus :: Exemplo de WebService para envio de e-mail com anexo.

Hoje vou disponibilizar um exemplo de WebService que permite o envio de e-mail através do Protheus com a possibilidade de anexar um arquivo. Para consumir o serviço desse WS usarei como "client" o WindowsPowerShell. O nome do WS será: u_WsMail que possuirá o método SendMail. #INCLUDE "APWEBSRV.CH" #INCLUDE "PROTHEUS.CH" #INCLUDE "TBICONN.CH" #INCLUDE "TRYEXCEPTION.CH" #DEFINE STR0001 "Web Service para Envio de e-mail" #DEFINE STR0002 "Enviar e-mail" /*/ WSSERVICE : u_WsMail Autor : Marinaldo de Jesus Data : 22 / 08 / 2010 Descri‡…o : Enviar e Receber e - mails via WS do Protheus Uso : Envio e Recebimento de e - mail /*/ WSSERVICE u_WsMail DESCRIPTION STR0001 NAMESPACE "http://localhost/naldo/u_wsmail.apw" //"Web Service para Envio de e-mail" WSDATA MailTo AS String WSDATA Subject AS String OPTIONAL WSDATA Body AS String OPTIONAL WSDATA FileNam