Hola,
El tema de estáticas me tiene frito...
Tengo esto:
METHOD loquesea( oSender ) CLASS laquesea
LOCAL a
LOCAL b
Static c := oSender:Value
....
....
....
Al compilar me da este error:
Error E0009 Illegal variable 'c' initializer ':'
El caso es que quiero tener una estática que se inicialice con el valor
de oSender:Value.
¿Alguna idea o pista?
Gracias!
José Luis Capel
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Esta es de xharbour
Esta es de xharbour
José Luis,
> El tema de estáticas me tiene frito...
>
> Tengo esto:
>
> METHOD loquesea( oSender ) CLASS laquesea
>
> LOCAL a
> LOCAL b
>
> Static c := oSender:Value
>
> ...
> ...
> ...
>
> Al compilar me da este error:
>
> Error E0009 Illegal variable 'c' initializer ':'
>
> El caso es que quiero tener una estática que se inicialice con el valor de
> oSender:Value.
>
> ¿Alguna idea o pista?
Vamos a ver... lo que quieres es inicializar una estática en su misma
declaración, pero el valor que estás asignando es una variable local (un
parámetro que recibe la función).
Tienes que tener en cuenta que la inicialización de una variable estática
tal y como lo estás haciendo la resuelve el compilador en tiempo de
compilación, y por lo tanto tiene que ser necesariamente una constante o una
expresión que pueda resolver el compilador, no en runtime.
La solución a lo que planteas es muy sencilla... declara la estática por un
lado y la asignas por otro, comprobando que no esté asignada todavía:
METHOD loquesea( oSender ) CLASS laquesea
LOCAL a
LOCAL b
Static c
IF c == Nil
c := oSender:Value
ENDIF
...
--
Un saludo,
José F. Giménez
> El tema de estáticas me tiene frito...
>
> Tengo esto:
>
> METHOD loquesea( oSender ) CLASS laquesea
>
> LOCAL a
> LOCAL b
>
> Static c := oSender:Value
>
> ...
> ...
> ...
>
> Al compilar me da este error:
>
> Error E0009 Illegal variable 'c' initializer ':'
>
> El caso es que quiero tener una estática que se inicialice con el valor de
> oSender:Value.
>
> ¿Alguna idea o pista?
Vamos a ver... lo que quieres es inicializar una estática en su misma
declaración, pero el valor que estás asignando es una variable local (un
parámetro que recibe la función).
Tienes que tener en cuenta que la inicialización de una variable estática
tal y como lo estás haciendo la resuelve el compilador en tiempo de
compilación, y por lo tanto tiene que ser necesariamente una constante o una
expresión que pueda resolver el compilador, no en runtime.
La solución a lo que planteas es muy sencilla... declara la estática por un
lado y la asignas por otro, comprobando que no esté asignada todavía:
METHOD loquesea( oSender ) CLASS laquesea
LOCAL a
LOCAL b
Static c
IF c == Nil
c := oSender:Value
ENDIF
...
--
Un saludo,
José F. Giménez
Esta es de xharbour
José,
>
> Vamos a ver... lo que quieres es inicializar una estática en su misma
> declaración, pero el valor que estás asignando es una variable local (un
> parámetro que recibe la función).
>
> Tienes que tener en cuenta que la inicialización de una variable estática
> tal y como lo estás haciendo la resuelve el compilador en tiempo de
> compilación, y por lo tanto tiene que ser necesariamente una constante o una
> expresión que pueda resolver el compilador, no en runtime.
>
> La solución a lo que planteas es muy sencilla... declara la estática por un
> lado y la asignas por otro, comprobando que no esté asignada todavía:
>
> METHOD loquesea( oSender ) CLASS laquesea
>
> LOCAL a
> LOCAL b
>
> Static c
>
> IF c == Nil
> c := oSender:Value
> ENDIF
> ...
>
>
Muchas gracias por tus explicaciones.
Saludos,
José Luis Capel
>
> Vamos a ver... lo que quieres es inicializar una estática en su misma
> declaración, pero el valor que estás asignando es una variable local (un
> parámetro que recibe la función).
>
> Tienes que tener en cuenta que la inicialización de una variable estática
> tal y como lo estás haciendo la resuelve el compilador en tiempo de
> compilación, y por lo tanto tiene que ser necesariamente una constante o una
> expresión que pueda resolver el compilador, no en runtime.
>
> La solución a lo que planteas es muy sencilla... declara la estática por un
> lado y la asignas por otro, comprobando que no esté asignada todavía:
>
> METHOD loquesea( oSender ) CLASS laquesea
>
> LOCAL a
> LOCAL b
>
> Static c
>
> IF c == Nil
> c := oSender:Value
> ENDIF
> ...
>
>
Muchas gracias por tus explicaciones.
Saludos,
José Luis Capel