Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 19 de Julho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
40 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Esclarecimentos Sobre Estrutura (Record) - Parte 1
Publicado por ActiveDelphi : Quinta, Janeiro 03, 2008 - 10:08 GMT-3 (1574 leituras)
Comentários comentar   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
João Marcos Olá amigos leitores. No artigo anterior recebi muitos e-mails com dúvidas sobre o tipo Record do Delphi e Ponteiros. Resolvi então dedicar um artigo a esse assunto, por isso, aconselho que leia este material somente se for iniciante ou possuir dúvidas sobre Record e Ponteiros.

Clique aqui para ler o artigo anterior

Esse artigo está escrito de forma diferente, já que a idéia aqui é só esclarecer dúvidas. Está escrito como se fosse parte do código da unit, então, para entendê-lo é necessário ler o artigo inteiro.

Record

É um tipo de dado do Delphi (hoje não muito utilizado devido ao uso de Orientação a Objetos), que funciona como um Array, mas a vantagem é que pode conter diferentes tipos de dados (String, Integer, Record, etc).

O Record trabalha com tamanho fixo de acordo com a quantidade de dados que você determinar ao Record. A aplicação do Record pode ser de inúmeras formas, abaixo veremos alguns exemplos:

type
  // em type declare Record
  TPessoa = record
    nome: string[30];
    idade: byte;
  end;
...
var
  // Em var declare a variável do tipo Record para utilizar na aplicação
  Pessoa: TPessoa;
  {Repare que depois de “begin” podemos utilizar um dado contido dentro de
  uma Estrutura (Record), para isso basta digitar a variável do tipo da
  estrutura seguido de ponto e o nome do campo declarado em Record. O delphi
  sugere o nome do campo quando se usa o recurso de auto completar - CTRL +
  Barra de Espaço.}

begin
  // Informe os dados para os campos do Record (Estrutura)
  Pessoa.name := 'João Marcos';
  Pessoa.idade := 25;
end;

Também é possível evitar a digitação repetitiva da variável pessoa caso sua estrutura seja mais complexa, para isso bastar utilizar o recurso “with”, abaixo temos o exemplo de utilização desse recurso disponível no Delphi:

var
  // Declare a variável do tipo Record para utilizar na aplicação
  Pessoa: TPessoa;
begin
  // Abaixo, com o recurso with é possível digitar somente o nome dos campos
  // que estão contidos na estrutura Pessoa, não sendo necessário fazer como
  // no exemplo anterior Pessoa.nome := 'João Marcos';

  with Pessoa do
  begin
    nome := 'João Marcos';
    idade := 25;
  end;
end;

Até aqui tudo está fácil e maravilhoso, mas vamos complicar um pouco mais para que você possa saber até onde se pode ir com o tipo Record.

// Código completo com array de records
// -----------------------------------------------------------
// Você pode copiar esse código e colar numa unit do Delphi
// e utiliza-lo fazendo chamadas pelo Evento OnCreate do Form.


unit uPrincipal;

interface

uses

  Forms, Dialogs;

type
  TFrmRecords = class(TForm)
    procedure FormCreate(Sender: TObject);
    // Procedimento Para mostrar os dados da estrutura Pessoa
    procedure MostrarPessoa(const campos: array of string);
  end;

var
  FrmRecords: TFrmRecords;

implementation

{$R *.dfm}

procedure TFrmRecords.FormCreate(Sender: TObject);
type
  // Outro modo que podemos utilizar para criar a estrutura
  // é declara-la dentro de uma procedure. Nesse exemplo
  // declaramos dentro do Evento OnCreate do Form.

  TPessoa = record
    PrimeiroNome: string[20];
    UltimoNome: string[20];
    Endereco: string[100];
    Bairro: string[100];
    Cidade: string[50];
    CodigoPostal: string[8];
  end;
var
  // Em seguida declaramos um array do tipo da estrutura TPessoa.
  // Assim trabalharemos com 3 "Pessoas".

  Pessoas: array[1..3] of TPessoa;
  i: Integer;
begin
  // Agora vamos informar os dados de cada pessoa.
  // Lembrando que esse é um exemplo, é possível trabalhar com a
  // estrutura de repetição "for" normalmente.

  with Pessoas[1] do
  begin

    PrimeiroNome := 'João';
    UltimoNome := 'Sakalauska';
    Endereco := 'Av. Brasil, 1000';
    Bairro := 'Guanabara';
    Cidade := 'Campinas';
    CodigoPostal := '1000';
  end;
  // Agora copiamos os dados informados acima para a posição
  // 2 e 3 da estrutura TPessoa.

  Pessoas[2] := Pessoas[1];
  Pessoas[3] := Pessoas[1];
  // E aproveitamos para mudar o Primeiro Nome nos registros de
  // posição 2 e 3 da estrutura.

  Pessoas[2].PrimeiroNome := 'Sara';
  Pessoas[3].PrimeiroNome := 'Henrique';
  // Agora mostramos os detalhes das pessoas
  // contidas na estrutura

  for i := 1 to 3 do
    with Pessoas[i] do
      MostrarPessoa(
        [PrimeiroNome,
        UltimoNome,
        Endereco,
        Bairro,
        Cidade,
        CodigoPostal]);
  // Após mostrar todos os registros o programa é encerrado
  Application.Terminate;
end;

// Procedure para mostrar um array com os dados das pessoas
// inseridas na estrutura TPessoa.

procedure TFrmRecords.MostrarPessoa(const campos: array of string);
var
  i: Integer;
  Texto: string;
begin
  // Mostra todos os campos começando no registro 0
  for i := 0 to Length(campos) - 1 do
    Texto := Texto + campos[i] + #10#13;
  ShowMessage(Texto);
end;

end.

O resultado do código acima é:

'João'
'Sakalauska'
'Av. Brasil, 1000'
'Guanabara'
'Campinas'
'1000'

'Sara'
'Sakalauska'
'Av. Brasil, 1000'
'Guanabara'
'Campinas'
'1000'

'Henrique'
'Sakalauska'
'Av. Brasil, 1000'
'Guanabara'
'Campinas'
'1000'

Considerações: Quando se trabalha com estruturas (record) é necessário alguns cuidados como por exemplo limpar todas as variáveis antes de utilizar e limpar após o uso ou finalização do sistema. Isso pode ser resolvido facilmente com um laço de
repetição atribuindo valor a cada variável da estrutura, exemplo:

  // Lembre-se que nossa estrutura tem 3 posições
  // São elas 0, 1, 2, não cometa o amadorismo de colocar o 3 no for
  // a menos que inicie em 1, como: for i := 1 to 3 do

  for i := 0 to 2 do
  begin

    Pessoas[i].PrimeiroNome := '';
    Pessoas[i].UltimoNome := '';
    Pessoas[i].Endereco := '';
    Pessoas[i].Bairro := '';
    Pessoas[i].Cidade := '';
    Pessoas[i].CodigoPostal := '';
  end;

Esse procedimento pode evitar dores de cabeça com lixo de memória (Isso será abordado em ponteiros).

No próximo artigo estarei passando algumas possíveis variações que podem ser feitas com record, mas espero que até aqui esse artigo possa ter ajudado. Lembrando que como não sou dono da verdade, seus comentários são muito importante e podem ajudar a melhorar o artigo, ou artigos futuros.

Clique aqui para fazer o download do exemplo

João Marcos Sakalauska
Contato: jsakalauska@gmail.com



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados