| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
leandroksc Profissional

Registrado: Quinta-Feira, 29 de Setembro de 2011 Mensagens: 528
|
Enviada: Sex Nov 30, 2012 8:14 am Assunto: Record com "case" dentro? [Resolvido] |
|
|
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 |
|
 |
viox Colaborador

Registrado: Sábado, 22 de Outubro de 2011 Mensagens: 1090 Localização: SINOP - MT
|
Enviada: Sex Nov 30, 2012 9:59 am Assunto: |
|
|
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 |
|
 |
leandroksc Profissional

Registrado: Quinta-Feira, 29 de Setembro de 2011 Mensagens: 528
|
Enviada: Sex Nov 30, 2012 10:07 am Assunto: |
|
|
Interessante isso.. Vivendo e aprendendo... É tão útil quanto o Packed Record? hehe
Obrigado pela resposta! |
|
| Voltar ao Topo |
|
 |
viox Colaborador

Registrado: Sábado, 22 de Outubro de 2011 Mensagens: 1090 Localização: SINOP - MT
|
Enviada: Sex Nov 30, 2012 10:33 am Assunto: |
|
|
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 |
|
 |
leandroksc Profissional

Registrado: Quinta-Feira, 29 de Setembro de 2011 Mensagens: 528
|
Enviada: Sex Nov 30, 2012 10:41 am Assunto: |
|
|
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.
 |
|
| Voltar ao Topo |
|
 |
viox Colaborador

Registrado: Sábado, 22 de Outubro de 2011 Mensagens: 1090 Localização: SINOP - MT
|
Enviada: Sex Nov 30, 2012 10:53 am Assunto: |
|
|
É 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 |
|
 |
|