32_es-ES
Secuencias de comandos: ¿Cómo obtener un objeto Nombre de una cadena entre comillas?Supongamos que tengo el nombre de una variable de tabla como una cadena entre comillas en una variable de tiempo de ejecución. ¿Cómo obtengo el objeto Nombre de la variable de tabla a partir de eso?
Tuve el mismo problema con las columnas de la tabla y pude solucionarlo obteniendo una lista de nombres de columnas de la tabla e iterándolas hasta que encontré un objeto Nombre que coincidiera con la cadena. Lamentablemente, no parece haber una función que devuelva variables de tabla, por lo que este método no funciona.
Fondo:
El propósito de esto es tener una biblioteca reutilizable que pueda incrustar fórmulas en columnas. Dado que el código de reutilización no conoce los nombres de las variables de la tabla ni los nombres de las columnas, necesito pasarlos a mis funciones como parámetros de cadena. Sin embargo, si uso la variable de cadena al crear la fórmula, el resultado es una cadena entre comillas en lugar de una referencia a la variable de columna o tabla.Re: Scripting: ¿Cómo obtener un objeto Nombre a partir de una cadena entre comillas?Puede obtener el valor de la variable de la tabla de la cadena con
x = Tabla de datos actual() << Obtener variable de tabla ("profesor");
Y puedes obtener el valor de una columna con
x = columna("altura")[ 1 ];
Las expresiones se pueden usar para metaprogramación más complicada (JSL que manipula JSL), pero como estás comenzando con una cadena, puede ser mejor usar Parse() y Eval(). Por ejemplo, lo siguiente toma una cadena de nombre de función y la trata como un nombre de función.
s = "sqrt"; x = Evaluación( Analizar( s || "(2)" ));Re: Scripting: ¿Cómo obtener un objeto Name a partir de una cadena entre comillas?El comando que necesitaba era `Parse()`. ¡Ojalá lo hubiera conocido hace una semana! 
¡Gracias!
EDIT: Me precipité un poco. Parse() no funcionará si el nombre de la variable de la tabla contiene paréntesis. (Por ejemplo, "Ancho (mm)"). Tendré que pensarlo un poco más...
Mensaje editado por: DaveSRe: Scripting: ¿Cómo obtener un objeto Name a partir de una cadena entre comillas?He encontrado algo que funciona:
-----------------------------Inicio del script-----------------------------
Borrar variables globales();
Borrar registro();
MiParse = Función(
{sName}, {Local predeterminado},
ej. = "Nombre(xxx)";
newStr = "\!"" || sName || "\!"";
retVal = Munger(ex, 0, "xxx", newStr);
retVal = Analizar(retVal);
);
str = "Ancho (mm)";
nombre = MyParse(str);
mostrar(nombre);
-----------------------------Fin del script-----------------------------
Obviamente, esto se limita al análisis de las cadenas que son nombres. ¡Gracias por la ayuda!
Comments
There are no comments yet