ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Record com "case" dentro? [Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
leandroksc
Profissional
Profissional


Registrado: Quinta-Feira, 29 de Setembro de 2011
Mensagens: 528

MensagemEnviada: Sex Nov 30, 2012 8:14 am    Assunto: Record com "case" dentro? [Resolvido] Responder com Citação

Galera, alguem poderia me explicar pra que serve, como funciona e como se utiliza este tipo de estrutura?

Segue um exemplo:

Código:
TMeuRecord = record
    case Byte of
      0: (Value: Word);
      1: (Byte1, Byte2: Byte);
  end;


Obrigado!


Editado pela última vez por leandroksc em Sex Nov 30, 2012 1:18 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
viox
Colaborador
Colaborador


Registrado: Sábado, 22 de Outubro de 2011
Mensagens: 1090
Localização: SINOP - MT

MensagemEnviada: Sex Nov 30, 2012 9:59 am    Assunto: Responder com Citação

Olá amigo, isso é usado caso queira criar um tipo de registro que tem campos para diferentes tipos de dados, mas você sabe que você nunca vai precisar usar todos os campos em uma instância desse registro.

Por exemplo:
Código:

  type
    TCliente = record
    case EhPessoaJuridica: Boolean of
      True: (CNPJ: ^string);
      False: (CPF, Nome: ^string);
    end;


Para cada instância, o compilador aloca memória suficiente para armazenar todos os campos da maior variante.

Não vejo vantagem em se utilizar um record desta forma, gera uma alta complexidade no código, e convenhamos nos dias atuais, não precisamos nos ater a esse nivel de detalhamento para economia de memória.
_________________
Just another Delphi guy.


http://www.soft42.com
http://www.nortaonegocios.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
leandroksc
Profissional
Profissional


Registrado: Quinta-Feira, 29 de Setembro de 2011
Mensagens: 528

MensagemEnviada: Sex Nov 30, 2012 10:07 am    Assunto: Responder com Citação

Interessante isso.. Vivendo e aprendendo... É tão útil quanto o Packed Record? hehe

Obrigado pela resposta!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
viox
Colaborador
Colaborador


Registrado: Sábado, 22 de Outubro de 2011
Mensagens: 1090
Localização: SINOP - MT

MensagemEnviada: Sex Nov 30, 2012 10:33 am    Assunto: Responder com Citação

Packed record já comprime por natureza, então sempre prefiro usar packed record, e não utilizaria case na definição de um record, devido a complexidade como falei... Mas saber nunca é demais!
Abraço.
_________________
Just another Delphi guy.


http://www.soft42.com
http://www.nortaonegocios.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
leandroksc
Profissional
Profissional


Registrado: Quinta-Feira, 29 de Setembro de 2011
Mensagens: 528

MensagemEnviada: Sex Nov 30, 2012 10:41 am    Assunto: Responder com Citação

A compressão acaba refletindo no desempenho... Na minha opinião, se o record não conter uma grande massa de dados, utilizaria sempre sem Packed, pra prevalecer o desempenho. Isso vai de caso a caso.

Wink
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
viox
Colaborador
Colaborador


Registrado: Sábado, 22 de Outubro de 2011
Mensagens: 1090
Localização: SINOP - MT

MensagemEnviada: Sex Nov 30, 2012 10:53 am    Assunto: Responder com Citação

É não vejo nenhum efeito prático quanto a utilizar Packed Record ou Record, acho que isso é só fofoca da oposição.
O uso de um ou de outro é mais por costume mesmo.
Agora utilizar variantes em um record sou contra principalmente em sistemas legados, imagina ta mexendo lá e encontra uma bagaça dessas, já em componentes é normal você encontrar então ai já não digo nada.

abrazz
_________________
Just another Delphi guy.


http://www.soft42.com
http://www.nortaonegocios.com.br
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB