Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Como saber si una variable es tipo array?
Message
From
08/02/2002 12:54:43
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00616974
Message ID:
00617545
Views:
28
This message has been marked as a message which has helped to the initial question of the thread.
Hola, Ricardo.

El tema con los arrays es que para VFP, cada elemento de un array puede tener un tipo de dato diferente, porque internamente funcionan como variables independientes. Así, podés tener un array de 3 posiciones en la que la primera es caracter, la segunda númerica, y la tercera lógica. Lo que es peor, los elementos pueden cambiar de tipo cuando se les da la gana, igual que cualquier otra variable.

Esto es algo heredado del comienzo de xBase y permite aberraciones al desarrollador, pero cambiarlo sería traumático por la cantidad de código que rompería.

Otro problema de definición es que cuando se menciona el array sin subíndice VFP lo interpreta igual que si se ubiese indicado el primero, por lo que vartype() no puede devolver diferentes resultados para:

? vartype( laArray )
? vartype( laArray[1] )

Porque ambos se refieren a lo mismo.

Respecto al generador de expresiones, creo que es interno, pero puede personalizarse. En el menú Herramientas, Opciones, dentro del vista Ubicaciones de archivos, figura. Mira la ayuda de la variable interna _GETEXPR para tener detalles de cómo escribir una aplicación de reemplazo.

Saludos.





>Nunca me paso de tener que controlar que una variable sea de tipo array, pero la pregunta es interesante. Es extraño que el lenguaje no te devuelva el tipo array con las funciones VARTYPE() o TYPE().
>Si ejecutamos un DISPLAY MEMORY LIKE myArray, si muestra que la variable 'myArray' es de tipo 'A' y si usamos el generador de expresiones (GETEXPR()), en la ventana de dialogo muestra un lista de las variables en memoria con su tipo y si hay una variable de tipo array le asigan una letra 'A', o sea, que internamente VFP debe distingirle el tipo al igual que los otros (caracter, lógico, etc.). Sería interesante conseguir el código de el generador de expresiones, tengo la vaga idea de que en alguna versión venia el fuente junto con los otros generadores (GENMENU, GENHTML, etc.)
>
>Fausto, creo que como te han respondido anteriormente vas a tener que crear tu propia función de control del tipos, algo del tipo:
>
>*---------------
>cError = ON('ERROR')
>ON ERROR nLen = -1
>nLen = ALEN( myArray ) && ALEN() o cualquier otra función de arrays
>ON ERROR &cError
>? IIF(nLen = -1, "No es un array", "Ok")
>*--------------
>
>Saludos,
>Ricardo._
Previous
Reply
Map
View

Click here to load this message in the networking platform