Hola
iarodriguez
LOCAL loScatt as Object
SELECT (lcCursor)
SCATTER NAME loScatt
El comando SCATTER NAME loScatt crea una variable tipo Object cuyas propiedades son los nombres de campo del cursor del área seleccionada y los valores de dichas propiedades son los valores que tiene la tabla o cursor en el registro del puntero. La palabra clave BLANK consigue que dichos valores sean equivalentes a los del registro en blanco, respetando el tipo de datos en cada caso. La palabra clave MEMO, logra que se incluyan los campos memo dentro del objeto.
Si el cursor (lcCursor) tiene unos campos que se llaman NOMBRE,FECHA, MONTO, la consulta al objeto loScatt puede ser:
? loScatt.Nombre
? loScatt.Fecha
? loScatt.Monto
Y, por supuesto: ? EMPTY(loScatt.Nombre) && devuelve un Logical (.F. / .T. )
El error que te salta en la comparación, es porque no pueden compararse dos objetos por sus nombres. Eso es un poco más complejo.
De modo que, en tu ejemplo, regEnBlanco y Marcado son dos objetos.
Si quieres limitar la cantidad de campos a incluir en el objeto (loScatt), puedes utilizar
[FIELDS FieldNameList | FIELDS LIKE Skeleton
| FIELDS EXCEPT Skeleton]
De todos modos, la respuesta para tu problema debe ser la que dió Zarlu: EMPTY()