Comprender el tipo de conjunto de Delphi

Uno de los Lenguaje Delphi características que no se encuentran en otros lenguajes modernos es la noción de conjuntos.

Delphitipo establecido es una colección de valores de la misma tipo ordinal.

Un conjunto se define utilizando el conjunto de palabra clave:

Los tipos de conjuntos generalmente se definen con subrangos.

En el ejemplo anterior, TMagicNumber es un tipo de subrango personalizado que permite que las variables del tipo TMagicNumber reciban valores del 1 al 34. En pocas palabras, un tipo de subrango representa un subconjunto de los valores en otro tipo ordinal.

Los valores posibles del tipo de conjunto son todos los subconjuntos del tipo base, incluido el conjunto vacío.

Una limitación en los conjuntos es que pueden contener hasta 255 elementos.

En el ejemplo anterior, el tipo de conjunto TMagicSet es un conjunto de elementos TMagicNumber: números enteros del 1 al 34.

La declaracion TMagicSet = conjunto de TMagicNumber es igual a la siguiente declaración: TMagicSet = conjunto de 1..34.

instagram viewer

Establecer variables de tipo

En el ejemplo anterior, las variables emptyMagicSet, oneMagicSet y otroMagicSet son conjuntos de TMagicNumber.

A asignar un valor a una variable de tipo conjunto, use los corchetes y enumere todos los elementos del conjunto. Como en:

Nota 1: cada variable de tipo de conjunto puede contener el conjunto vacío, denotado por [].

Nota 2: el orden de los elementos en un conjunto no tiene significado, ni tampoco es significativo que un elemento (valor) se incluya dos veces en un conjunto.

La palabra clave IN

Para probar si un elemento está incluido en el conjunto (variable) use el EN palabra clave:

Establecer operadores

De la misma manera que puede sumar dos números, puede tener un conjunto que es la suma de dos conjuntos. Con sets tu evento tiene más operadores:

  • + devuelve la unión de dos conjuntos.
  • - Devuelve la diferencia de dos conjuntos.
  • * devuelve la intersección de dos conjuntos.
  • = devuelve verdadero si dos conjuntos son iguales - tienen el mismo elemento.
  • <= devuelve verdadero si el primer conjunto es un subconjunto del segundo conjunto.
  • > = devuelve verdadero si el primer conjunto es un superconjunto del segundo conjunto.
  • <> devuelve verdadero si dos conjuntos no son idénticos.
  • IN devuelve verdadero si se incluye un elemento en el conjunto.

Aquí hay un ejemplo:

¿Se ejecutará el procedimiento ShowMessage? Si es así, ¿qué se mostrará?

Aquí está la implementación de la función DisplayElements:

Pista: si. Mostrado: "18 | 24 |".

Enteros, Personajes, Booleanos

Por supuesto, al crear tipos de conjuntos no está restringido a valores enteros. Los tipos ordinales de Delphi incluyen caracteres y valores booleanos.

Para evitar que los usuarios escriban claves alfabéticas, agregue esta línea en el OnKeyPress de un control de edición:

Conjuntos con enumeraciones

Un escenario de uso común en el código de Delphi es mezclar los tipos enumerados y los tipos de conjuntos.

Aquí hay un ejemplo:

Pregunta: ¿se mostrará el mensaje? Respuesta: no :(

Conjuntos en propiedades de control de Delphi

Cuando necesite aplicar "negrita" a la fuente utilizada en los controles de TEdit, utilice el Inspector de objetos o el siguiente código:

¡La propiedad Estilo de fuente es una propiedad de tipo conjunto! Así es como se define:

Por lo tanto, se usa un tipo enumerado TFontStyle como tipo base para el tipo de conjunto TFontStyles. La propiedad Style de la clase TFont es de tipo TFontStyles, por lo tanto, es una propiedad de tipo set.

Otro ejemplo incluye el resultado de la función MessageDlg. Se utiliza una función MessageDlg para abrir un cuadro de mensaje y obtener la respuesta del usuario. Uno de los parámetros de la función es el parámetro Botones del tipo TMsgDlgButtons.

TMsgDlgButtons se define como un conjunto de (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp).

Si muestra un mensaje al usuario que contiene los botones Sí, Aceptar y Cancelar y desea ejecutar algún código si se hizo clic en los botones Sí o Aceptar, puede usar el siguiente código:

Palabra final: los sets son geniales. Los conjuntos pueden parecer confusos para un Principiante de Delphi, pero tan pronto como comience a usar las variables de tipo conjunto, descubrirá que proporcionan mucho más de lo que sonaba al principio.