Tipos de dados ordinais e enumerados para Delphi

click fraud protection

Delphi's linguagem de programação é um exemplo de uma linguagem fortemente tipada. Isso significa que todas as variáveis ​​devem ser de algum tipo. Um tipo é essencialmente um nome para um tipo de dados. Quando declaramos uma variável, devemos especificar seu tipo, que determina o conjunto de valores que a variável pode conter e as operações que podem ser executadas nela.

Muitos dos tipos de dados embutidos do Delphi, como Integer ou Corda, pode ser refinado ou combinado para criar novos tipos de dados. Neste artigo, veremos como criar tipos de dados ordinais personalizados em Delphi.

Tipos ordinais

As características definidoras dos tipos de dados ordinais são: eles devem consistir em um número finito de elementos e devem ser ordenados de alguma maneira.

Os exemplos mais comuns de tipos de dados ordinais são todos os tipos Inteiros, bem como Char e boleano tipo. Mais precisamente, o Object Pascal possui 12 tipos ordinais predefinidos: Inteiro, Shortint, Smallint, Longint, Byte, Word, Cardinal, Booleano, ByteBool, WordBool, LongBool e Char. Existem também duas outras classes de tipos ordinais definidos pelo usuário: tipos enumerados e tipos de subintervalo.

instagram viewer

Em qualquer tipo ordinal, deve fazer sentido avançar ou retroceder para o próximo elemento. Por exemplo, tipos reais não são ordinais, porque não faz sentido recuar ou avançar. A pergunta "Qual é o próximo real após 2,5?" não tem sentido.

Como, por definição, cada valor, exceto o primeiro, possui um predecessor único e cada valor, exceto o último, possui um sucessor único, vários valores predefinidos funções são usados ​​ao trabalhar com tipos ordinais:

Função Efeito
Ord (X) Dá o índice do elemento
Pred (X) Vai para o elemento listado antes de X no tipo
Succ (X) Vai para o elemento listado após X no tipo
Dez (X; n) Move n elementos para trás (se n for omitido, move 1 elemento para trás)
Inc (X; n) Move n elementos para frente (se n for omitido, move 1 elemento para frente)
Baixo (X) Retorna o valor mais baixo no intervalo do tipo de dados ordinal X
Alto (X) Retorna o valor mais alto no intervalo do tipo de dados ordinal X


Por exemplo, Alto (Byte) retorna 255 porque o valor mais alto do tipo Byte é 255 e Succ (2) retorna 3 porque 3 é o sucessor de 2.

Nota: Se tentarmos usar Succ quando no último elemento o Delphi irá gerar um Exceção de tempo de execução se a verificação de faixa estiver ativada.

Tipo Enumerado Delphi

A maneira mais fácil de criar um novo exemplo de um tipo ordinal é simplesmente listar vários elementos em alguma ordem. Os valores não têm significado inerente e sua ordinalidade segue a sequência na qual os identificadores estão listados. Em outras palavras, uma enumeração é uma lista de valores.

tipo TWeekDays = (segunda, terça, quarta, quinta, sexta, sábado, domingo);

Depois de definir um tipo de dados enumerado, podemos declarar variáveis ​​desse tipo:

var SomeDay: TWeekDays;

O objetivo principal de um tipo de dados enumerado é esclarecer quais dados seus programa irá manipular. Um tipo enumerado é realmente apenas uma maneira abreviada de atribuir valores seqüenciais a constantes. Dadas essas declarações, terça-feira é uma constante do tipo TWeekDays.

O Delphi nos permite trabalhar com os elementos em um tipo enumerado usando um índice que vem da ordem em que foram listados. No exemplo anterior, segunda-feira no TWeekDays declaração de tipo tem o índice 0, terça-feira tem o índice 1 e assim por diante. As funções listadas na tabela anterior permitem, por exemplo, usar Succ (sexta-feira) para "ir para" sábado.

Agora podemos tentar algo como:

para SomeDay: = Segunda-feira para domingo FazE se SomeDay = terça-feira então
ShowMessage ('Terça-feira é!');

A Delphi Visual Component Library usa tipos enumerados em muitos lugares. Por exemplo, a posição de um formulário é definida da seguinte maneira:

TPosition = (poDesigned, poDefault, poDefaultPosOnly, poDefaultSizeOnly, poScreenCenter);

Usamos Position (por meio do Object Inspector) para obter ou definir o tamanho e o posicionamento do Formato.

Tipos de subfaixa

Simplificando, um tipo de subfaixa representa um subconjunto dos valores em outro tipo ordinal. Em geral, podemos definir qualquer sub-intervalo começando com qualquer tipo ordinal (incluindo um tipo enumerado definido anteriormente) e usando um ponto duplo:

tipo TWorkDays = segunda-feira.. Sexta-feira;

Aqui TWorkDays inclui os valores segunda, terça, quarta, quinta e sexta-feira.

Isso é tudo - agora vá enumerar!

instagram story viewer