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(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/emoticonpack > ------------------------------------ >