Los conjuntos están bien, los arreglos son geniales.
Supongamos que queremos crear tres matrices unidimensionales para 50 miembros en nuestra comunidad de programación. La primera matriz es para nombres, la segunda para correos electrónicos y la tercera para el número de cargas (componentes o aplicaciones) a nuestra comunidad.
Cada matriz (lista) tendría índices coincidentes y mucho código para mantener las tres listas en paralelo. Por supuesto, podríamos probar con una matriz tridimensional, pero ¿qué pasa con su tipo? Necesitamos cadenas para nombres y correos electrónicos, pero un número entero para la cantidad de cargas.
La forma de trabajar con dicha estructura de datos es usar Delphi's estructura de registro.
Por ejemplo, la siguiente declaración crea un tipo de registro llamado TMember, el que podríamos usar en nuestro caso.
Esencialmente, un la estructura de datos de registro puede mezclar cualquiera de los tipos integrados de Delphi incluidos los tipos que haya creado. Los tipos de registros definen colecciones fijas de elementos de diferentes tipos. Cada artículo, o campo, es como una variable, que consiste en un nombre y un tipo.
TMember type contiene tres campos: un valor de cadena llamado Name (para contener el nombre de un miembro), un valor de un tipo de cadena llamado eMail (para un correo electrónico) y un número entero (Cardinal) llamado Posts (para contener el número de presentaciones a nuestra comunidad).
Una vez que hemos configurado el tipo de registro, podemos declarar que una variable es del tipo TMember. TMember ahora es un tipo de variable tan bueno para las variables como cualquiera de los tipos integrados de Delphi como String o Integer. Nota: la declaración de tipo TMember, no asigna memoria para los campos Nombre, Correo electrónico y Mensajes;
Para crear realmente una instancia de registro TMember, tenemos que declarar una variable de tipo TMember, como en el siguiente código:
Ahora, cuando tenemos un registro, usamos un punto para aislar los campos de DelphiGuide.
Nota: el fragmento de código anterior podría reescribirse con el uso de con palabra clave.
Ahora podemos copiar los valores de los campos de DelphiGuide a AMember.
El tipo de registro declarado dentro de la declaración de un formulario (sección de implementación), función o procedimiento tiene un alcance limitado al bloque en el que se declara. Si el registro se declara en la sección de interfaz de una unidad, tiene un alcance que incluye cualquier otra unidad o programa que use la unidad donde se produce la declaración.
Como TMember actúa como cualquier otro tipo de Object Pascal, podemos declarar una matriz de variables de registro:
Nota: Aquí se explica cómo declarar e inicializar una matriz constante de registros en Delphi.