Records no Turbo

<< Click to Display Table of Contents >>

Navigation:  Novatos >

Records no Turbo

Previous pageReturn to chapter overviewNext page

Records no Turbo / Delphi 2006

 

Records na linguagem Delphi são, basicamente, um conjunto de vários elementos. Cada elemento é chamado de campo(field) e cada campo é formado por um nome(name) e tipo(datatype).

Exemplo:

 

type

  TTechTips = record

    Campo1 : Integer;

    Campo2 : string;

  end;

 

No Turbo/Delphi 2006 os records ficaram mais poderosos e espertos! Abaixo listei as suas novas características:

 

* Podem possuir construtores, com pelo menos um parâmetro;

* suportam propriedades e métodos estáticos;

* suportam sobrecarga de operador;

* não suportam métodos virtuais(virtual, dynamic e message);

* não suportam destrutores.

 

Exemplo de uma estrutura no Turbo/Delphi 2006:

 

 type

  TTechTips2006 = record

  strict private

    FValorNome : Integer;

    function getNome: string;

  public

    FPrefixo : string;

    constructor Create(const Nome: Integer);

    property Nome : string read getNome;

  end

 

implementation 

 

{ TTechTips2006 } 

 

constructor TTechTips2006.Create(const Nome: Integer);

begin

  FValorNome := Nome;

  FPrefixo := '"utilizando constructor"';

end;

function TTechTips2006.getNome: string;

begin

  Inc(FValorNome);

  Result := Format('%s %d', [FPrefixo, FValorNome]);

end;

 

Adicione um TMemo no formulário (name: mmo1):

 

procedure TForm1.FormShow(Sender: TObject);

var

  recAux1 : TTechTips2006;

  recAux2 : TTechTips2006;

begin

  // sem constructor [FValorNome = 0 por padrão]:

  recAux1.FPrefixo := 'D2006: ';

  mmo1.Lines.Add(recAux1.Nome);

  mmo1.Lines.Add(recAux1.Nome);

  // utilizando constructor:

  recAux1 := TTechTips2006.Create(2006);

  mmo1.Lines.Add(recAux1.Nome);

  mmo1.Lines.Add(recAux1.Nome);

  recAux2 := recAux1;

  recAux2.FPrefixo := 'Adicional';

  mmo1.Lines.Add(recAux2.Nome);

  mmo1.Lines.Add(recAux2.Nome);

  mmo1.Lines.Add(recAux1.Nome);

  mmo1.Lines.Add(recAux1.Nome);

  // não é necessário utilizar Free com Records.

end;