Trabalhando com Records e Propertys no Delphi 7
Boa Tarde
Gostaria de saber se no delphi é possível essa abordagem
Tenho a classe
Qunado vou atribuir os valores nela
Eu sou obrigado a criar um tipo o record endereco alimentar os valores e depois atribuir o endereco no DadosEndereco que é da minha classe pessoa, é possível armazenar diretamente como está comentado no exemplo:
Gostaria de saber se no delphi é possível essa abordagem
Tenho a classe
RDadosEndereco = record
Rua : string;
Numero : string;
Complemento: string;
Bairro : string;
Cidade : string;
Estado : string;
end;
TPessoa = class(TInterfacedObject,IClasseBase)
private
FNome : string;
FIdade : integer;
FDataNascimento: string;
FDadosEndereco : RDadosEndereco;
procedure SetNome(const Value: string);
procedure SetDataNascimento(const Value: string);
procedure SetIdade(const Value: integer);
function GetDataNascimento: string;
function GetIdade: integer;
function GetNome: string;
function GetEndereco: RDadosEndereco;
procedure SetEndereco(const Value: RDadosEndereco);
public
property Nome : string read GetNome write SetNome;
property Idade: integer read GetIdade write SetIdade;
property DataNascimento: string read GetDataNascimento write SetDataNascimento;
property DadosEndereco: RDadosEndereco read GetEndereco write SetEndereco;
function ToString: string;
Qunado vou atribuir os valores nela
procedure Executar;
begin
if(Pessoa = nil) then
Pessoa := TPessoa.Create;
Pessoa.Nome := 'Lucas Riechelmann Ramos';
Pessoa.Idade := 27;
Pessoa.DataNascimento:= '27/01/1988';
with endereco do
begin
Rua := 'Rua de Teste';
Numero := '123';
Complemento := 'Apto 1';
Bairro := 'Bairro Teste';
Cidade := 'Cidade Teste';
Estado := 'Estado Teste';
end;
Pessoa.DadosEndereco := endereco;
Leitura := '';
WriteLn(Pessoa.ToString);
ReadLn(Leitura);
Pessoa.DadosEndereco.Rua := 'Rua de Teste';
{
Pessoa.DadosEndereco.Rua := 'Rua de Teste';
Pessoa.DadosEndereco.Numero := '123';
Pessoa.DadosEndereco.Complemento := 'Apto 1';
Pessoa.DadosEndereco.Bairro := 'Bairro Teste';
Pessoa.DadosEndereco.Cidade := 'Cidade Teste';
Pessoa.DadosEndereco.Estado := 'Estado Teste';
}
end;
Eu sou obrigado a criar um tipo o record endereco alimentar os valores e depois atribuir o endereco no DadosEndereco que é da minha classe pessoa, é possível armazenar diretamente como está comentado no exemplo:
Pessoa.DadosEndereco.Rua := 'Rua de Teste';
Lucas Ramos
Curtidas 0
Respostas
Marco Salles
24/10/2015
tem alguns modos de fazer , um deles é por ponteiros
Implementation
PRDadosEndereco = ^RDadosEndereco;
..........................................................................
TPessoa = class(TInterfacedObject,IClasseBase)
.......................................
FDadosEndereco : PRDadosEndereco;
...................................................................
function GetEndereco: PRDadosEndereco;
procedure SetEndereco(const Value: PRDadosEndereco);
property DadosEndereco: PRDadosEndereco read GetEndereco write SetEndereco;
.............................................................................
constructor Create();
destructor Destroy;Implementation
constructor TPessoa.Create; begin FDadosEndereco := AllocMem(sizeof(RDadosEndereco)); end; destructor TPessoa.Destroy; begin FreeMem(FDadosEndereco); end;
if(Pessoa = nil) then
Pessoa := TPessoa.Create;
.....................................................................
with Pessoa.DadosEndereco^ do ///////////Note a Utilização do Ponteiro
begin
Rua := 'Rua de Teste';
Numero := '123';
Complemento := 'Apto 1';
Bairro := 'Bairro Teste';
Cidade := 'Cidade Teste';
Estado := 'Estado Teste';
end;
GOSTEI 0
Lucas Ramos
24/10/2015
Obrigado marco, vou verificar aqui, estou me aprofundando no delphi por isso a dúvida.
GOSTEI 0