Compreendendo e usando tipos de dados de registro no Delphi

click fraud protection

Conjuntos estão bem matrizes são ótimos.

Suponha que desejemos criar três matrizes unidimensionais para 50 membros em nossa comunidade de programação. A primeira matriz é para nomes, a segunda para e-mails e a terceira para o número de uploads (componentes ou aplicativos) em nossa comunidade.

Cada matriz (lista) teria índices correspondentes e bastante código para manter as três listas em paralelo. Claro, poderíamos tentar com uma matriz tridimensional, mas e o seu tipo? Precisamos de string para nomes e e-mails, mas um número inteiro para o número de envios.

A maneira de trabalhar com essa estrutura de dados é usar o Delphi estrutura de registro.

TMember = Registro...

Por exemplo, a declaração a seguir cria um tipo de registro chamado TMember, o que poderíamos usar no nosso caso.

Essencialmente, um estrutura de dados de registro pode misturar qualquer um dos tipos internos do Delphi incluindo todos os tipos que você criou. Os tipos de registro definem coleções fixas de itens de diferentes tipos. Cada item ou campo, é como uma variável, consistindo em um nome e um tipo.

instagram viewer

O tipo TMember contém três campos: um valor de sequência chamado Name (para conter o nome de um membro), um valor de um tipo de sequência chamado e-mail (para um e-mail) e um número inteiro (cardinal) chamado Posts (para conter o número de envios para nossa comunidade).

Depois de configurar o tipo de registro, podemos declarar que uma variável é do tipo TMember. O TMember agora é tão bom tipo de variável para variáveis ​​quanto qualquer Delphi 's tipos internos como String ou Inteiro. Nota: a declaração do tipo TMember, não aloca nenhuma memória para os campos Nome, Email e Postagens;

Para realmente criar uma instância do registro TMember, precisamos declarar uma variável do tipo TMember, como no código a seguir:

Agora, quando temos um registro, usamos um ponto para isolar os campos do DelphiGuide.

Nota: o trecho de código acima pode ser reescrito com o uso de compalavra chave.

Agora podemos copiar os valores dos campos do DelphiGuide para AMember.

Escopo e visibilidade do registro

O tipo de registro declarado na declaração de um formulário (seção de implementação), função ou procedimento tem um escopo limitado ao bloco em que é declarado. Se o registro for declarado na seção de interface de uma unidade, ele terá um escopo que inclui outras unidades ou programas que usam a unidade em que a declaração ocorre.

Uma matriz de registros

Como o TMember age como qualquer outro tipo de Object Pascal, podemos declarar uma matriz de variáveis ​​de registro:

Nota: Veja como declarar e inicializar uma matriz constante de registros em Delphi.

Registros como campos de registro

Como um tipo de registro é legítimo como qualquer outro tipo Delphi, podemos fazer com que um campo de registro seja um registro em si. Por exemplo, poderíamos criar o ExpandedMember para acompanhar o que o membro está enviando junto com as informações do membro.

Preencher todas as informações necessárias para um único registro é agora de alguma forma mais difícil. Mais pontos (pontos) são necessários para acessar os campos de TExpandedMember.

Gravar com campos "desconhecidos"

Um tipo de registro pode ter uma parte variante (não deve ser confundida com a variável do tipo Variante). Os registros variantes são usados, por exemplo, quando queremos criar um tipo de registro que possui campos para tipos diferentes de dados, mas sabemos que nunca precisaremos usar todos os campos em um único registro instância. Para saber mais sobre as partes variantes nos registros, consulte os arquivos de ajuda do Delphi. O uso de um tipo de registro variante não é seguro e não é uma prática de programação recomendada, principalmente para iniciantes.

No entanto, os registros variantes podem ser bastante úteis, se você se encontrar em uma situação para usá-los.

instagram story viewer