Pascal/Turbo Pascal - ¿Pueden explicarme esta declaración en el type?

   
Vista:

¿Pueden explicarme esta declaración en el type?

Publicado por Diego (98 intervenciones) el 08/04/2014 15:55:20
Buen día, tengo un problema en saber bien como es que funciona esta declaración.
ya que como usa un case of dentro del type, no sé como es que se manejan los datos que son declarados de ese tipo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Type
  tPersona = Packed Record {tipo de registro para personas}
    Case valido: Boolean of {discriminante de registros para indicar si son válidos (de personas) o no (de mapa o borrados); ocupa un byte}
      True: ( DNI: Longword; {0..4294967295}
        Apellido: String[20];
        Nombres: String[20];
        FechaNac: Longword {AAAAMMDD} ); {el registro es de una persona}
      False: ( mapa: Array[0..49] of Byte {capacidad para 50*8=400 registros} ); {el registro es de mapa de espacio libre; se define la variante con la misma extensión en bytes que la variante para personas}
    end;
  aPersonas = File of tPersona; {tipo de archivo para registros de personas con mapa de espacio libre en la posición 0}
  ctlPersonas = Record {tipo de registro de control para archivo de personas (handle); se pasa como parámetro por referencia a cualquier subprograma que acceda al archivo}
    arch: aPersonas;
    p: tPersona; {registro buffer para lectura o escritura de personas}
    longMapa: Byte; {longitud en registros del mapa, ubicado en los primeros registros del archivo}
    mapa: Array[0..9] of ^tPersona {arreglo de punteros a registros de mapa de espacio libre en memoria, para el caso de que se extienda en varios registros}
  end;
Const
  regsPorMapa = SizeOf(tPersona.mapa);
  mascEL: Byte = %10000000; {máscara para buscar espacio libre}

Además quería saber si envez de usar una mascara para saber la valides del campo, ¿podría remmplazar eso por una booleano que indicara la validez o no del dato?.

Les agradezco su paciencia.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder