Hola a todos. Soy nuevo en le foro, pero no en la programación en Delphi.
Escribo este post por que me he encontrado una situación extraña utilizando los records. Me explico:
Estoy realizando un componente para capturar los datos de un GPS. Básicamente el GPS manda unas tramas vía RS232 con los distintos datos. Estas tramas se identifican por un comienzo y fin de trama y un código de trama. Bien yo capturo la trama e intento copiar los datos a una variable definida por un record para separar los distintos datos. Hasta aquí todo correcto.
Cuando empiezo a hacer pruebas los datos que obtengo no coinciden con los datos enviados, y empiezo a indagar, llegando al meollo de la cuestión.
Probar lo siguiente:
Ponemos un record del siguiente tipo:
Código Delphi
[-]TTrama=Record
Byte1: Byte;
Byte2: Byte;
Byte3: Byte;
Numer1: DWord;
Numer2: DWord;
Numer3: DWord;
Numer4: DWord;
Table: Array[1..13] of byte;
End;
Bien si añadimos un botón para ver el tamaño del recor:
Código Delphi
[-]ShowMessage(IntToStr(SizeOf(TTrama)));
Obtenemos: 36.
Si hacemos las cuentas tenemos:
3+4x4+13=3+16+13=32
Como podéis ver no coincide el tamaño definido o esperado con el que me devuelve el compilador.
¿Alguien tiene la solución?.
Un saludo y perdón por el peñazo.