[delphi-br] Estrutura de um record

2008-10-01 Por tôpico Elazar Dornelles Ceza
Bom dia pessoal, 

como faze para acessar a estrutura de um record?

por exemplo tenho os seguintes records, 

Record1 = record
  Codigo : Integer;
  Name : String;
  Endereco : String;
end;

Record2 = record
  Codigo : Integer;
  Descricao : String;
  Situacao : String;
end;

Record3 = record
  Codigo : Integer;
  Descricao : String;
end;

Record4 = record
  Codigo : Integer;
  Descricao : String;
  Quantidade : Double;
  ValorUnitario : Double;
  ValorTotal : Double;
end;

Estou tentando fazer uma procedure mais ou menos assim

procedure ObterListaDados(Lista : TStrings; Registro : record);
var
  vCont : Integer;
begin
  Lista.Clear;
  for vCont := 0 to Registro.QtdCampos do
Lista.Add(Registrocampo);  
end;

Alguem tem alguma sugestão?

Atenc;
Elazar


  Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]



RE: [delphi-br] Estrutura de um record

2008-10-01 Por tôpico Rubem Nascimento da Rocha

Até onde me consta, não existe como verificar a estrutura de um record, pois um 
record não possui as mesmas características de uma classe contendo propriedades 
publicadas. Neste último caso, é possível, via RTTI, consultar as propriedades 
publicadas de um objeto e obter seus valores. Com um record, isso não existe.

João Morais, mais algo para complementar/corrigir e q possa ajudar o colega?

Sds.



To: delphi-br@yahoogrupos.com.br
From: [EMAIL PROTECTED]
Date: Wed, 1 Oct 2008 05:57:25 -0700
Subject: [delphi-br] Estrutura de um record

Bom dia pessoal,

como faze para acessar a estrutura de um record?

por exemplo tenho os seguintes records,

Record1 = record
Codigo : Integer;
Name : String;
Endereco : String;
end;

Record2 = record
Codigo : Integer;
Descricao : String;
Situacao : String;
end;

Record3 = record
Codigo : Integer;
Descricao : String;
end;

Record4 = record
Codigo : Integer;
Descricao : String;
Quantidade : Double;
ValorUnitario : Double;
ValorTotal : Double;
end;

Estou tentando fazer uma procedure mais ou menos assim

procedure ObterListaDados(Lista : TStrings; Registro : record);
var
vCont : Integer;
begin
Lista.Clear;
for vCont := 0 to Registro.QtdCampos do
Lista.Add(Registrocampo);
end;

Alguem tem alguma sugestão?

Atenc;
Elazar

_
Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o 
Messenger! É GRÁTIS!
http://www.msn.com.br/emoticonpack

Re: [delphi-br] Estrutura de um record

2008-10-01 Por tôpico Joao Morais
Rubem Nascimento da Rocha wrote:
 Até onde me consta, não existe como verificar a estrutura de um record,
 pois um record não possui as mesmas características de uma classe
 contendo propriedades publicadas. Neste último caso, é possível, via
 RTTI, consultar as propriedades publicadas de um objeto e obter seus
 valores. Com um record, isso não existe.
 
 João Morais, mais algo para complementar/corrigir e q possa ajudar o colega?

Completo dizendo que record é uma estrutura que organiza um conjunto de 
dados apenas em tempo de compilação, não dá flexibilidade para trabalhar 
em tempo de execução, e não permite herança. Portanto ele é totalmente 
inviável para aproveitamento de código. Você pode vir a hackear uma 
coisa aqui outra ali, mas não terá suporte da linguagem e por 
consequência não terá produtividade.

O ideal é seguir a idéia do Rubem e partir para classes desde o início. 
Não é tão complicado. Os únicos cuidados que você precisa ter é criar o 
objeto antes de usá-lo e destruí-lo depois que não precisar mais dele. 
No mais, é uma estrutura semelhante ao record.

Informe-se sobre rtti, sobre a área published, e sobre as rotinas da 
unit typinfo. Para os seus primeiros testes, herde suas classes a partir 
da classe TPersistent, declarada na unit Classes. A partir daqui, FastMM 
será seu amigo. Use-o para descobrir se você está esquecendo de destruir 
algum objeto.

Por fim, qual seu objetivo: faculdade, indicação de estudo, saco cheio 
do tdataset, necessidade no trabalho, ...?

--
Joao Morais





 
 
 
 To: delphi-br@yahoogrupos.com.br
 From: [EMAIL PROTECTED]
 Date: Wed, 1 Oct 2008 05:57:25 -0700
 Subject: [delphi-br] Estrutura de um record
 
 Bom dia pessoal,
 
 como faze para acessar a estrutura de um record?
 
 por exemplo tenho os seguintes records,
 
 Record1 = record
 Codigo : Integer;
 Name : String;
 Endereco : String;
 end;
 
 Record2 = record
 Codigo : Integer;
 Descricao : String;
 Situacao : String;
 end;
 
 Record3 = record
 Codigo : Integer;
 Descricao : String;
 end;
 
 Record4 = record
 Codigo : Integer;
 Descricao : String;
 Quantidade : Double;
 ValorUnitario : Double;
 ValorTotal : Double;
 end;
 
 Estou tentando fazer uma procedure mais ou menos assim
 
 procedure ObterListaDados(Lista : TStrings; Registro : record);
 var
 vCont : Integer;
 begin
 Lista.Clear;
 for vCont := 0 to Registro.QtdCampos do
 Lista.Add(Registrocampo);
 end;
 
 Alguem tem alguma sugestão?
 
 Atenc;
 Elazar
 
 _
 Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o 
 Messenger! É GRÁTIS!
 http://www.msn.com.br/emoticonpack
 
 



Res: [delphi-br] Estrutura de um record

2008-10-01 Por tôpico Elazar Dornelles Ceza
Rubens, João.

Obrigado pelas dicas. 
Conheco RTTImas como já existe tudo em record fica dificil mudar assim de 
cara...(embora estou achando que esta seja a saida)

Acontece que tenho um monte destas estruturas para converter pra equivalentes 
em tabelas, tenho cerca de 600 records...
então fazer na mão...puts.. rsss..

A ideia é q quando a aplicação estiver rodando e receber por parametro um 
destes records, automaticamente crie a tabela então, conseguindo pegar a lista 
da estrutura iria facilitar.

E existe outro detalhe, é que pode ser geradas novas estruturas então o 
processo se encarregaria de criar automaticamente caso ainda não exista.

Uma outra pergunta que deixo no ar, se o delphi consegue esta lista quando 
estamos lidando nos fontes ...porque não seria possivel, ou sera que ele usa 
alguma especie de parser pra estas estruturas???


Atenc;
Elazar


- Mensagem original 
De: Joao Morais [EMAIL PROTECTED]
Para: delphi-br@yahoogrupos.com.br
Enviadas: Quarta-feira, 1 de Outubro de 2008 11:00:25
Assunto: Re: [delphi-br] Estrutura de um record


Rubem Nascimento da Rocha wrote:
 Até onde me consta, não existe como verificar a estrutura de um record,
 pois um record não possui as mesmas características de uma classe
 contendo propriedades publicadas. Neste último caso, é possível, via
 RTTI, consultar as propriedades publicadas de um objeto e obter seus
 valores. Com um record, isso não existe.
 
 João Morais, mais algo para complementar/ corrigir e q possa ajudar o colega?

Completo dizendo que record é uma estrutura que organiza um conjunto de 
dados apenas em tempo de compilação, não dá flexibilidade para trabalhar 
em tempo de execução, e não permite herança. Portanto ele é totalmente 
inviável para aproveitamento de código. Você pode vir a hackear uma 
coisa aqui outra ali, mas não terá suporte da linguagem e por 
consequência não terá produtividade.

O ideal é seguir a idéia do Rubem e partir para classes desde o início. 
Não é tão complicado. Os únicos cuidados que você precisa ter é criar o 
objeto antes de usá-lo e destruí-lo depois que não precisar mais dele. 
No mais, é uma estrutura semelhante ao record.

Informe-se sobre rtti, sobre a área published, e sobre as rotinas da 
unit typinfo. Para os seus primeiros testes, herde suas classes a partir 
da classe TPersistent, declarada na unit Classes. A partir daqui, FastMM 
será seu amigo. Use-o para descobrir se você está esquecendo de destruir 
algum objeto.

Por fim, qual seu objetivo: faculdade, indicação de estudo, saco cheio 
do tdataset, necessidade no trabalho, ...?

--
Joao Morais

 
 
  _ _ __
 To: [EMAIL PROTECTED] os.com.br
 From: [EMAIL PROTECTED] com.br
 Date: Wed, 1 Oct 2008 05:57:25 -0700
 Subject: [delphi-br] Estrutura de um record
 
 Bom dia pessoal,
 
 como faze para acessar a estrutura de um record?
 
 por exemplo tenho os seguintes records,
 
 Record1 = record
 Codigo : Integer;
 Name : String;
 Endereco : String;
 end;
 
 Record2 = record
 Codigo : Integer;
 Descricao : String;
 Situacao : String;
 end;
 
 Record3 = record
 Codigo : Integer;
 Descricao : String;
 end;
 
 Record4 = record
 Codigo : Integer;
 Descricao : String;
 Quantidade : Double;
 ValorUnitario : Double;
 ValorTotal : Double;
 end;
 
 Estou tentando fazer uma procedure mais ou menos assim
 
 procedure ObterListaDados( Lista : TStrings; Registro : record);
 var
 vCont : Integer;
 begin
 Lista.Clear;
 for vCont := 0 to Registro.QtdCampos do
 Lista.Add(Registro. ...campo) ;
 end;
 
 Alguem tem alguma sugestão?
 
 Atenc;
 Elazar
 
  _ _ _ _ _ _
 Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o 
 Messenger! É GRÁTIS!
 http://www.msn. com.br/emoticonp ack
  - - --
 

 


  Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua 
cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses

[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] Estrutura de um record

2008-10-01 Por tôpico JB
veja se isto ajuda...

http://www.planetadelphi.com.br/ver_artigo.php?id=141

-- 
Att.

-- 

José Benedito
Software Developer
[EMAIL PROTECTED]
(19) 8116-7826


Re: Res: [delphi-br] Estrutura de um record

2008-10-01 Por tôpico Joao Morais
Elazar Dornelles Ceza wrote:
 Rubens, João.
 
 Obrigado pelas dicas. 
 Conheco RTTImas como já existe tudo em record fica dificil mudar assim de 
 cara...(embora estou achando que esta seja a saida)
 
 Acontece que tenho um monte destas estruturas para converter pra equivalentes 
 em tabelas, tenho cerca de 600 records...
 então fazer na mão...puts.. rsss..

Você pode criar um parser para interpretar todos os seus records, gerar 
um xml, e usar esse xml como um metadado dos seus records em tempo de 
execução. =)

 
 A ideia é q quando a aplicação estiver rodando e receber por parametro um 
 destes records, automaticamente crie a tabela então, conseguindo pegar a 
 lista da estrutura iria facilitar.

Infelizmente é impossível. O compilador descarta a estrutura do record, 
tudo o que você vê em tempo de projeto é convertido em endereço de 
memória e nada mais. O máximo que você consegue é descobrir o tamanho do 
record em bytes, o que não ajuda em nada.


 E existe outro detalhe, é que pode ser geradas novas estruturas então o 
 processo se encarregaria de criar automaticamente caso ainda não exista.
 
 Uma outra pergunta que deixo no ar, se o delphi consegue esta lista quando 
 estamos lidando nos fontes ...porque não seria possivel, ou sera que ele 
 usa alguma especie de parser pra estas estruturas???

A ide interpreta seus fontes em tempo de projeto para gerar as 
informações para o code insight. Nada disso é transformado em código na 
sua aplicação.

A idéia do parser é séria, há códigos prontos na net que podem te 
ajudar. E daí pra frente você verifica o que é mais viável, se manter 
essa geração do metadado em paralelo aos seus records, ou passar para 
uma estrutura mais inteligente como classes.

 
 Atenc;
 Elazar

--
Joao Morais


 
 
 - Mensagem original 
 De: Joao Morais [EMAIL PROTECTED]
 Para: delphi-br@yahoogrupos.com.br
 Enviadas: Quarta-feira, 1 de Outubro de 2008 11:00:25
 Assunto: Re: [delphi-br] Estrutura de um record
 
 
 Rubem Nascimento da Rocha wrote:
 Até onde me consta, não existe como verificar a estrutura de um record,
 pois um record não possui as mesmas características de uma classe
 contendo propriedades publicadas. Neste último caso, é possível, via
 RTTI, consultar as propriedades publicadas de um objeto e obter seus
 valores. Com um record, isso não existe.

 João Morais, mais algo para complementar/ corrigir e q possa ajudar o colega?
 
 Completo dizendo que record é uma estrutura que organiza um conjunto de 
 dados apenas em tempo de compilação, não dá flexibilidade para trabalhar 
 em tempo de execução, e não permite herança. Portanto ele é totalmente 
 inviável para aproveitamento de código. Você pode vir a hackear uma 
 coisa aqui outra ali, mas não terá suporte da linguagem e por 
 consequência não terá produtividade.
 
 O ideal é seguir a idéia do Rubem e partir para classes desde o início. 
 Não é tão complicado. Os únicos cuidados que você precisa ter é criar o 
 objeto antes de usá-lo e destruí-lo depois que não precisar mais dele. 
 No mais, é uma estrutura semelhante ao record.
 
 Informe-se sobre rtti, sobre a área published, e sobre as rotinas da 
 unit typinfo. Para os seus primeiros testes, herde suas classes a partir 
 da classe TPersistent, declarada na unit Classes. A partir daqui, FastMM 
 será seu amigo. Use-o para descobrir se você está esquecendo de destruir 
 algum objeto.
 
 Por fim, qual seu objetivo: faculdade, indicação de estudo, saco cheio 
 do tdataset, necessidade no trabalho, ...?
 
 --
 Joao Morais
 

  _ _ __
 To: [EMAIL PROTECTED] os.com.br
 From: [EMAIL PROTECTED] com.br
 Date: Wed, 1 Oct 2008 05:57:25 -0700
 Subject: [delphi-br] Estrutura de um record

 Bom dia pessoal,

 como faze para acessar a estrutura de um record?

 por exemplo tenho os seguintes records,

 Record1 = record
 Codigo : Integer;
 Name : String;
 Endereco : String;
 end;

 Record2 = record
 Codigo : Integer;
 Descricao : String;
 Situacao : String;
 end;

 Record3 = record
 Codigo : Integer;
 Descricao : String;
 end;

 Record4 = record
 Codigo : Integer;
 Descricao : String;
 Quantidade : Double;
 ValorUnitario : Double;
 ValorTotal : Double;
 end;

 Estou tentando fazer uma procedure mais ou menos assim

 procedure ObterListaDados( Lista : TStrings; Registro : record);
 var
 vCont : Integer;
 begin
 Lista.Clear;
 for vCont := 0 to Registro.QtdCampos do
 Lista.Add(Registro. ...campo) ;
 end;

 Alguem tem alguma sugestão?

 Atenc;
 Elazar

  _ _ _ _ _ _
 Instale a Barra de Ferramentas com Desktop Search e ganhe EMOTICONS para o 
 Messenger! É GRÁTIS!
 http://www.msn. com.br/emoticonp ack
  - - --

 
  
 
 
   Novos endereços, o Yahoo! que você conhece. Crie um email novo com a 
 sua cara @ymail.com ou @rocketmail.com.
 http://br.new.mail.yahoo.com/addresses
 
 [As partes desta mensagem que não continham texto foram removidas]