Recursos Avancados No Delphi
Recursos Avancados No Delphi
Mas ele funciona com records, e você consegue fazer chover com Class
Operator.
21
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Criei três variáveis do tipo record TProduto, onde a.valor recebe 10, e o
produto b recebe 30.
Logo abaixo estou informando que c irá receber a soma desses dois
produtos, conseguiu entender e pegar qual é a questão?
31
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Mas no nosso exemplo estamos somando dois objetos que são uma
instância da classe TProduto.
Mas observe que ele irá compilar, e não só irá compilar, que ao clicar
no Add ele irá mostrar a soma de “a” e “b”.
41
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Você só vai somar o objeto, e já irá ter uma classe implícita que faz isso
para você de forma automática.
51
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Com isso passa ser possível fazer operações que antes não era
possível.
Então temos uma classe record, e dentro dessa classe record temos os
Class Operator, o operador de adição, o Add, que está dentro da
documentação do Delphi.
61
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Ela pega o resultado que irá ter da soma dos valores de “a” e “b”
implicitamente.
Então para quem está desenvolvendo não precisa fazer esse cálculo,
ele simplesmente irá fazer a soma de a e b, e aí pronto, implicitamente
ele pega os valores e faz a forma, que seria “correta”, que a maioria das
pessoas fazem hoje.
Dessa forma você pode fazer o seu Delphi somar a classe, ou subtrair a
classe.
Por exemplo, você tem uma rotina de venda, que ela tem a lista de
itens, faz todo o cálculo da venda.
Quando alguém cancelar uma venda, por exemplo, você irá fazer
TVenda – (item removido), a classe vem implicitamente e faz todo o
cálculo para você.
81
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Mas você deve está se perguntando como isso está sendo feito.
Foi criado um outro Class Operator dentro dessa nossa classe record,
que é o Implicit.
91
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
1
10
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Isso é muito legal, porque, se passar para ele um inteiro ou uma string
o compilador irá compreender e tratar isso, sem gerar erro.
111
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
1
12
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Vamos dizer que você tem sua classe de itens, e o número dos itens
são incrementados, todas as vezes você vai adicionar um item vai
colocando, item1, item2…
Você não precisa ficar colocando o número do item +1, só fazer dessa
forma que acabei de mostrar que já incrementa o número.
1
13
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
1
14
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Observe que não estou passando Inc no objeto inteiro e sim na classe.
1
16
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
Como eu disse que era 10, executei o Inc que está sobrecarregado com
mais 10, então ele me retornou 20.
E se eu quiser um decremento de 2?
1
17
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
1
18
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
1
20
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
O que acabamos de fazer pode ser feito para qualquer classe sua,
basta você criar o método de comparação.
Ele conseguiu comprar isso para nós e saber que ele são diferentes,
agora vou igualar os valores e vamos ver o resultado.
1
21
RECURSOS AVANÇADOS NO DELPHI
{CLASS OPERATOR}
1
22
1
23
RECURSOS AVANÇADOS NO DELPHI
{ABSOLUTE}
Irei falar sobre absolute, é um negócio muito legal que tem dentro do
Delphi, mas que poucas pessoas usam.
1
24
RECURSOS AVANÇADOS NO DELPHI
{ABSOLUTE}
Realmente vale muito apena você conhecer esses diversos recursos que
temos dentro do Delphi.
1
25
RECURSOS AVANÇADOS NO DELPHI
{ABSOLUTE}
1
26
RECURSOS AVANÇADOS NO DELPHI
{ABSOLUTE}
É aí que entra o Absolute, ele veio para eliminar esses casting, com o
Absolute nós fazemos é um casting na declaração da variável.
1
27
RECURSOS AVANÇADOS NO DELPHI
{ABSOLUTE}
Viu que ele fez praticamente a mesma coisa que a execução anterior.
A partir desse momento tenho uma variável Edit, que é do tipo TEdit,
que está apontando para o endereço de memória onde está o Sender.
1
29
RECURSOS AVANÇADOS NO DELPHI
{ABSOLUTE}
A seguir:
1
30
1
31
RECURSOS AVANÇADOS NO DELPHI
{CONHECENDO AS RECORDS VARIANTS}
Se não, vem que irei lhe mostrar como podemos trabalhar com elas, e
claro, a praticidade e simplicidade da utilização.
Eu tenho aqui o meu exemplo.
Antes de explicar a fundo sobre elas, vale a pena saber que são
recursos disponíveis na linguagem.
Antes de explicar a fundo sobre elas, vale a pena saber que são
recursos disponíveis na linguagem.
1
33
RECURSOS AVANÇADOS NO DELPHI
{CONHECENDO AS RECORDS VARIANTS}
Se minha forma for verdadeira, eu irei ter os parâmetros X1, X2, Y2, Y2,
ou seja, os quatros cantos do quadrado, e se não for, irei ter apenas os
valores X e Y.
1
34
RECURSOS AVANÇADOS NO DELPHI
{CONHECENDO AS RECORDS VARIANTS}
Mas hoje em dia, uma máquina simples já possui uns 6GB de ram, e
isso não é perceptível, quando programamos de qualquer forma, pois
temos memória ram de sobra.
1
36
RECURSOS AVANÇADOS NO DELPHI
{CONHECENDO AS RECORDS VARIANTS}
1
37
RECURSOS AVANÇADOS NO DELPHI
{CONHECENDO AS RECORDS VARIANTS}
É muito simples, e fácil, mas é uma funcionalidade que fica aqui para
seu conhecimento.
1
38
1
39
RECURSOS AVANÇADOS NO DELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
1
40
RECURSOS AVANÇADOS NO DELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
1
41
RECURSOS AVANÇADOS NOpostDELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
Como você pode ver no último snippet de código acima, uma variável
declarada dentro de um bloco begin-end é visível apenas no bloco
específico, e não depois que o bloco foi finalizado. No final das
instruções if, J e K não serão mais visíveis.
1
43
RECURSOS AVANÇADOS NO DELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
1
44
RECURSOS AVANÇADOS NO DELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
Constantes Inline
Além das variáveis, agora você também pode inserir uma declaração
de valor constante. Isso pode ser aplicado a constantes de tipos ou
constantes não tipadas, caso em que o tipo é inferido (um recurso que
está disponível para constantes há muito tempo). Um exemplo simples
está abaixo:
1
45
RECURSOS AVANÇADOS NO DELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
Resumo Inline
Declarações de variáveis inline, com inferência de tipos e escopo local,
trazem ar fresco para a linguagem Delphi. Embora a legibilidade do
código-fonte do Pascal continue sendo um princípio fundamental a ser
preservado, é importante modernizar a linguagem no nível principal,
removendo um pouco da ferrugem (real ou percebida). No caso de
variáveis inline, há muitas vantagens de sair do estilo tradicional de
codificação, que o valor é claro.
Ainda assim, você pode manter seu código como está e pedir a seus
colegas desenvolvedores que sigam a declaração tradicional. Nada no
código ou estilo existente está errado, mas as declarações inline
oferecem uma nova oportunidade. Eu já tenho problemas para voltar
para versões mais antigas do Delphi.
1
46
1
47
RECURSOS AVANÇADOS NO DELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
Sejamos sinceros,
Quantos de nós programadores Delphi já realizamos operações
entediantes como concatenar strings extensas, como por exemplo uma
query, onde devemos realizar uma operação em tempo de execução e
precisamos transformar essa query em uma string para colocarmos
numa propriedade SQL da consulta.
Neste capítulo, irei lhe mostrar algo que me ajuda muito em muitos,
vou lhe mostrar o “MultiPaste“.
O que é MultiPaste?
Talvez você esteja se perguntando o que é esse tal de MultiPaste, e
por anos de experiência na ferramenta RAD da Embarcadero nunca
ouviu falar nessa funcionalidade maravilhosa que está disponível no
Delphi.
1
48
RECURSOS AVANÇADOS NO DELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
1
49
RECURSOS AVANÇADOS NO DELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
Siga o exemplo 1
01 em seguida você verá isto: 1
02
Agora, a partir daí, você pode digitar isso na primeira caixa de edição:
1
50
RECURSOS AVANÇADOS NO DELPHI
{INTRODUZINDO VARIÁVEIS INLINE}
Você deve então observar que memo principal está alterando o texto
que você tem em sua área de transferência adicionando o conteúdo da
primeira caixa de edição ao início de cada linha e o conteúdo da
segunda caixa de edição ao final de cada linha. Você deve acabar com
uma caixa de diálogo que se parece com isso:
Mas você deve estar se perguntando, será que terei que fazer um novo
projeto para utilizar o Firemonkey?
Te digo que você não terá necessidade disso, você pode integrar o que
existe de melhor no FMX junto com o VCL.
Vamos lá então?
Eu possuo um projeto VCL criado, com o componente MainMenu.
1
53
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
54
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
55
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
56
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
57
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
58
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
59
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
E agora?
Agora vamos ao nosso projeto VCL, e iremos fazer algumas coisas para
que esse nosso formulário Firemokey seja reconhecido.
1
60
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
61
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
62
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
63
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
64
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
1
65
RECURSOS AVANÇADOS NO DELPHI
{VCL E FMX NO MESMO PROJETO}
Viu como de forma prática e simples temos o melhor dos dois mundos
no nosso Delphi.
1
66
1
67
RECURSOS AVANÇADOS NO DELPHI
{CLASS HELPER}
1
68
RECURSOS AVANÇADOS NO DELPHI
{CLASS HELPER}
Neste capítulo, vamos falar mais do incômodo. Uma coisa que tem que
despertar em você como desenvolvedor é o incomodo quando o código
não está legal, o código está feio, não está legível, isso tem que
começar a te incomodar.
1
69
RECURSOS AVANÇADOS NO DELPHI
{CLASS HELPER}
Ele não possui nada agregado, então teríamos que fazer esse casting
na mão, só que é aí que entra as classes helpers, já pensou em criar o
seu próprio TString para o TCaption? Você pode criar agora.
1
70
RECURSOS AVANÇADOS NO DELPHI
{CLASS HELPER}
1
71
RECURSOS AVANÇADOS NO DELPHI
{CLASS HELPER}
Agora temos toda nossa operação de forma contínua, não preciso ficar
fazendo casting dentro da minha camada de visão, isso não é legal,
você tem que entregar para quem for trabalhar com seu formulário, as
suas interfaces, seus métodos já funcionando perfeitamente, sem que
tenha que ser alterado nada, ou ficar fazendo casting, as técnicas de
orientação a objeto estão aí para lhe auxiliarem.
1
72
1
73
RECURSOS AVANÇADOS NO DELPHI
{CENTRALIZANDO AS EXCEPTIONS}
Neste capítulo, vou te passar mais uma dica. Irei tratar um problema
recorrente que muitos de nós programadores Delphi enfrentamos, que
é o tratamento de exceções ou tratamentos de erros dentro do
software.
Estou aqui para lhe dizer que não tem necessidade nenhuma de fazer
isso.
1
74
RECURSOS AVANÇADOS NO DELPHI
{CENTRALIZANDO AS EXCEPTIONS}
Com esse nosso novo projeto criado, iremos criar uma nova Unit e
iremos salvá-la como Exception.
1
75
RECURSOS AVANÇADOS NO DELPHI
{CENTRALIZANDO AS EXCEPTIONS}
E é isso que vamos fazer, iremos criar uma procedure e vamos dizer
para o Application.onException que toda vez que acontecer uma
exceção, irá chamar o método que está aguardando tal requisição.
1
76
RECURSOS AVANÇADOS NO DELPHI
{CENTRALIZANDO AS EXCEPTIONS}
1
77
RECURSOS AVANÇADOS NO DELPHI
{CENTRALIZANDO AS EXCEPTIONS}
1
78
RECURSOS AVANÇADOS NO DELPHI
{CENTRALIZANDO AS EXCEPTIONS}
Essa mensagem tem que está em nosso arquivo de log, vamos verificar
se ele foi criado e seu conteúdo.
1
81
RECURSOS AVANÇADOS NO DELPHI
{REMOVENDO UNITS DESNECESSÁRIAS}
1
82
RECURSOS AVANÇADOS NO DELPHI
{REMOVENDO UNITS DESNECESSÁRIAS}
Após o CnPack instalado basta ir no seu menu, com seu projeto aberto,
e clicar em Uses Cleaner…
1
83
RECURSOS AVANÇADOS NO DELPHI
{REMOVENDO UNITS DESNECESSÁRIAS}
Após isso ele irá abrir uma janela onde você terá as informações de
units não utilizadas no seu projeto.
1
84
1
85
RECURSOS AVANÇADOS NO DELPHI
{REMOVENDO UNITS DESNECESSÁRIAS}
1
86
RECURSOS AVANÇADOS NO DELPHI
{REMOVENDO UNITS DESNECESSÁRIAS}
A resposta veio em algo que já tem dentro do RAD Studio, que pode
nos auxiliar, e como eu priorizo muito na qualidade de código encontrei
soluções que me auxiliam na hora de ter que refatorar um código.
1
87
RECURSOS AVANÇADOS NO DELPHI
{REMOVENDO UNITS DESNECESSÁRIAS}
A tela que irá abrir mostra uma lista de todos os métodos junto com as
principais métricas sobre cada método.
1
88
RECURSOS AVANÇADOS NO DELPHI
{REMOVENDO UNITS DESNECESSÁRIAS}
Você pode clicar duas vezes em qualquer método na lista para abrir
sua implementação.
O que é o Clube?
Um clube de programadores com amplo conhecimento, tutelados por
um dos MVP's de maior destaque no Brasil, compartilhando
conhecimento por um valor super justo e acessível.
Preparatório para
Componentes Inovação
Certificação Delphi
Recursos da Ferramentas de
Firemonkey
Linguagem Terceiros
Automação Conteúdos
Comercial Exclusivo