Artigo Clube Delphi Edição 26 - Conheça seu programa por dentro
Artigo da Revista Clube Delphi Edição 26.
Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
Conheça seu programa por dentro
Uma introdução à RTTI
Este artigo trata da RTTI (Runtime Type Information), uma tecnologia que permite obter informações sobre as classes existentes em uma aplicação Delphi, em tempo de execução.
A tecnologia RTTI possui um correspondente em Java (o conceito de reflexão, ou reflection), através do qual se pode saber tudo sobre uma classe. O programador consegue inferir e descobrir informações sobre o que quiser.
Já em Delphi, apenas informações publicadas (published) das classes estão disponíveis para consulta. Informações públicas e privadas não são disponibilizadas pela RTTI. Outro ponto importante é que as funcionalidades disponibilizadas pela RTTI para os programadores são expandidas a cada versão do Delphi. Por exemplo, uma das funcionalidades que vamos usar nas seções seguintes, para buscar informações sobre classes, funciona perfeitamente no Delphi 6, mas no Delphi 3, por exemplo, ainda não existia. Certamente, nas próximas versões do Delphi, mais e mais funcionalidades aparecerão.
A idéia deste artigo é mostrar para o leitor o básico sobre a RTTI, com vários exemplos, e depois apresentar algumas funcionalidades adicionais que vão mostrar um pouco do poder dessa tecnologia.
Exemplo1: nome e tipo de componentes
Como primeiro exemplo, vamos perguntar para os componentes existentes em um Form Delphi qual o nome deles e a qual classe pertencem. Se o componente for um componente visual, vamos também obter o componente em que está contido. Vamos jogar o resultado deste exemplo dentro de um componente Memo.
Em um Form, coloque um Memo, um botão e outros componentes a seu gosto. No evento OnClick do botão, coloque o seguinte código:
procedure TFormExemploClassName.BtnObterInfoClick(
Sender: TObject);
var
i: Integer;
begin
Memo1.Lines.Clear;
"
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo