No se puede calcular el offset del dato

En la expresión indicada en el programa se utiliza el operador offset (o el símbolo sinónimo &) con el fin de obtener la dirección (desplazamiento) de un carácter, byte o word perteneciente a una tabla.

Esto no está permitido, únicamente es posible obtener la dirección del inicio de la tabla, pero no de un dato de la misma (excepto con datos de tipo int).

A continuación se muestra un programa con dos ejemplos del uso del operador offset (o bien el símbolo &) para tablas de tipo byte; uno válido y otro no.

Ejemplo:
PROGRAM mi_juego;
GLOBAL
    BYTE mi_tabla[99];
    offset_dato;
BEGIN
    // Ejemplo correcto
    offset_dato=offset mi_tabla;

    // Ejemplo erróneo
    offset_dato=offset mi_tabla[1];
END



Esto es también aplicable a cadenas de texto (datos de tipo string), es decir, que tampoco se puede obtener la dirección de un carácter de dentro de la cadena.

Además, el operador offset no es necesario para obtener el desplazamiento de una cadena de texto (puede ser omitido). Es decir, que estas dos sentencias serían igualmente válidas:

  offset_cadena=offset mi_cadena;
  offset_cadena=mi_cadena;

Nota: Para operar con las cadenas de texto debe utilizar las funciones del lenguaje que han sido diseñadas con tal fin (véase por ejemplo strcpy()).


Ver: Sintaxis - offset