Publicamos um novo eBook, com foco em AdvPL e TLPP.
Já faz um certo tempo, que estávamos montando os conteúdos para um eBook focado exclusivamente em AdvPL e TLPP.
Recentemente tivemos a oportunidade de escrever esse conteúdo, contendo referências à vários conteúdos.
O eBook está disponível gratuitamente para quem é assinante do Kindle Unlimited ou para quem quiser adquirir pelo valor sugerido de R$ 19,99.
Segue o link para o eBook – clique aqui.
Tentamos condensar o conteúdo, e trazer desde o básico até exemplos e explicações mais elaboradas. A contagem no Word deu 250 páginas com 50.147 palavras:
Quanto aos capítulos, são mais de 180, segue abaixo a listagem:
- História da linguagem AdvPL
- Introdução
- Surgimento da linguagem TLPP
- Como funciona a compilação
- Instalando e configurando o VSCode
- Instalando o VSCode
- Instalando a extensão TDS (TOTVS Developer Studio)
- Configurando uma Workspace
- Baixando includes (extensão .ch)
- Configurando o AppServer no VSCode
- Configurando a depuração de códigos no VSCode (debug)
- Pré-Requisitos para testar as customizações
- Estrutura de um programa
- Bibliotecas e Constantes
- Documentação da Função
- Abertura de um Programa
- Corpo do Programa
- Encerramento
- Como funciona a Linguagem
- Documentação e Comentários
- Utilizando ProtheusDOC para documentar um fonte
- Tipos de Comentário
- Tipos de Funções
- User Function
- Static Function
- Escopo de Variáveis
- Variáveis Local
- Variáveis Private
- Variáveis Static
- Variáveis Public
- Constantes
- Tipagem de Dados
- Caractere
- Numérico
- Lógico
- Data
- Indefinido
- Objeto
- Bloco de Código
- Array
- Array Multidimensional
- JSON
- Declaração de Valores com AS
- Notação Húngara
- Máscaras
- Operadores
- Operador :=
- Operador ;
- Operador @
- Operador $
- Operador &
- Operador :
- Operador ==
- Operador ** ou ^
- Operador * e *=
- Operador – e -=
- Operador + e +=
- Operador / e /=
- Operador %
- Operador =
- Operador < e <=
- Operador > e >=
- Operador <> ou # ou != ou ! com ==
- Operador ! ou .NOT.
- Operador .AND.
- Operador .OR.
- Operador Default
- Array
- Inserindo elemento no Array
- Ordenando um Array
- Procurando elemento no Array
- Removendo elemento do Array
- Estruturas de Condição
- If … EndIf
- Else
- ElseIf
- Do Case … EndCase
- Iif
- Laços de Repetição
- For … Next
- While … EndDo
- Comandos Loop e Exit
- Orientação a Objetos
- Classe
- Métodos
- Atributos ou Propriedades
- Qual a diferença entre as classes começadas com MS*, com T* e com FW* ?
- Analisando os Métodos ou Propriedades disponíveis no TDN e na depuração de código
- Como funciona os objetos dentro de uma dialog
- Exemplo criando painéis e objetos
- MVC
- Conhecendo o MenuDef
- Conhecendo o ModelDef
- Conhecendo o ViewDef
- Precauções ao criar uma função em MVC
- Diferenças de cadastros Modelo no Protheus (Modelo 1, Modelo 2, Modelo 3 e Modelo X)
- Exemplo de criação de cadastro em MVC
- Descobrindo se uma tela é em MVC
- Banco de Dados
- Principais Comandos e Funções
- Ordenando uma tabela
- Realizando uma pesquisa e posicionamento
- Executando queries
- Percorrendo informações de um Alias
- Trabalhando com Tabelas Temporárias
- Inicializador de campos
- Gatilhos
- Modo de Edição
- Funções de Validações
- Parâmetros e Perguntas
- Travando registros e gravando conteúdos
- Relatórios
- Conhecendo a classe de relatórios gráficos FWMSPrinter
- Entendendo como funciona o dimensionamento dos componentes
- Imprimindo texto com SayAlign
- Imprimindo texto na vertical com Say
- Imprimindo imagens com SayBitmap
- Imprimindo QRCode
- Imprimindo linhas e quadros com os métodos Line e Box
- Utilizando cores nos textos
- Pintando uma cor de fundo com FillRect
- Criando a lógica do cabeçalho, do rodapé e quebra de páginas
- Gerando a informação zebrada entre as linhas
- Gerando um relatório com a FWPrintSetup
- WebService REST
- Conceitos e Configuração
- Trabalhando com Bearer Token (camada de segurança)
- Criando uma consulta de informações
- Criando uma atualização de informações
- Consumindo uma API de terceiros
- Integração com Arquivos
- Gravando arquivos com FWFileWriter
- Lendo arquivos com FWFileReader
- Pontos de Entrada
- O que é PARAMIXB
- Cuidados ao des posicionar tabelas (usar sempre FWGetArea e FWRestArea)
- Principais lugares para um ponto de entrada
- Ponto de Entrada em MVC
- Integração com eMails
- Configurações
- Realizando disparo de eMail
- Execuções Automáticas (ExecAuto)
- Como Funciona
- Conhecendo os principais tipos e as variáveis reservadas
- O que significam as letras usadas na MsExecAuto
- Executando uma inclusão simples através da MsExecAuto
- Executando uma inclusão de uma tela com cabeçalho usando MsExecAuto
- Descobrindo se uma função tem execução automática da MsExecAuto
- Construindo a execução automática em MVC com FWMVCRotAuto ou com FWLoadModel (e SetValue)
- Utilização de AvKey, FWVetByDic, AUTDELETA e LINPOS
- TLPP
- Principais diferenças
- Extraindo as includes através de tlpp.environment.getIncludesTLPP
- Nomes Longos
- Namespace
- Try … Catch
- Parâmetros nomeados
- Reflection e Annotation
- Recursos TGetData e TGetMethods
- Expressão Regular (RegEx)
- Padronização na Linguagem TLPP
- Principais Erros
- Alias already in use
- Alias does not exist
- Argument error
- Array out of bounds
- DBSetOrder – Index not found
- Duplicated function
- Enddo does not match while / EndIf does not match if
- File not found ch
- Incorrect syntax near
- InterFunctionCall: cannot find function in AppMap
- Invalid field name in Alias
- Invalid property
- Invalid typecast
- It wasn’t possible to obtain exclusive access to the objects repository
- Local variable never used
- Local declaration follows executable statement
- More parameters used in function call than expected
- Stack depth overflow in function
- Statement unbalanced function
- Statement unterminate at end of line/unbalanced parentesis/brackets
- Static Function never called
- String size overflow
- Syntax Error
- Too few parameters calling
- Type Mismatch on
- Unsupported assign to function call
- Variable does not exist
- Variable redefined
- Links úteis
- Considerações Finais
- Sobre o Autor
Bom pessoal, por hoje é só.
Abraços e até a próxima.