Intentando utilizar la lista de archivos de inclusión ()Hola a todos,
Estoy tratando de usar Incluir lista de archivos () y obtengo errores. No está funcionando como esperaba.
Aquí hay un ejemplo.
Tengo 3 archivos de archivos llamados Include1.jsl, Include2.jsl, Include3.jsl que estoy tratando de incluir en TestInclude.jsl que se enumeran a continuación:
Clear Log();
//Names Default To Here( 1 );
Clear Symbols();
Clear Globals();
Include( "Include1.jsl" );
Include( "Include2.jsl" );
Include( "Include3.jsl" );
show(Include File List());
Los cuatro archivos están en la misma carpeta. Cada uno de los tres archivos incluidos tiene su correspondiente
show("IncludeScriptN");donde N es 1, 2 y 3
Cuando estoy ejecutando TestInclude, jsl, espero ver:
"IncludeScript1";
"IncludeScript2";
"IncludeScript3";
Include File List() = {"C:\...\TestingLocaleScipts\TestInclude.jsl", "C:\...\TestingLocaleScipts\Include1.jsl", "C:\...\TestingLocaleScipts\Include2.jsl", "C:\...\TestingLocaleScipts\Include3.jsl"};
En cambio veo esto:
"IncludeScript1";
"IncludeScript2";
"IncludeScript3";
Include File List() = {"C:\...\TestingLocaleScipts\TestInclude.jsl"}Entonces, ¿los archivos incluidos ESTÁN incluidos, de hecho funcionan, pero la función no los muestra? ¿Qué estoy haciendo mal?
Gracias,
METRO.
Re: Intentando usar Incluir Lista de Archivos ()La función devuelve el anidamiento actual de los archivos incluidos. En el nivel raíz, donde lo ha llamado, solo hay un archivo, sin anidamiento real. Intenta llamarlo desde uno de los archivos incluidos.
fn1 = Save Text File( "$temp/a.jsl", "show(<SPAN>Include File List</SPAN>())" );
fn2 = Save Text File( "$temp/b.jsl", "include(fn1)" );
Include( fn2 );
Incluir lista de archivos () = {"C: \ Users \ v1 \ AppData \ Local \ Temp \ a.jsl", "C: \ Users \ v1 \ AppData \ Local \ Temp \ b.jsl", "Script.jsl" };
script.jsl es el nombre del script de nivel raíz no guardado.
La función es para implementar informes de errores personalizados; si algo sale mal en un tratar() en el archivo fn1, puede escribir el captura cláusula para informar las inclusiones anidadas. Como un efecto secundario interesante, también le da el nombre del archivo de script actual.
Hay dos formas de usar archivos de inclusión: puede pensar en ellos como bibliotecas de funciones, o puede pensar en ellos como bloques de código para ejecutar. los Incluir lista de archivos no es muy útil si son bibliotecas de funciones porque la mayor parte del código no se está ejecutando mientras se está ejecutando la inclusión ... define las funciones y los retornos. Pero si el archivo de inclusión es un bloque de código que se ejecuta cuando se incluye y podría incluir más bloques de código, entonces Incluir lista de archivos podría ser útil para la depuración.
Re: Intentando usar Incluir Lista de Archivos ()@Craige_Hales
¿Jubilado y aún trabajando?
¿Puede explicar a qué se refiere con el informe de errores personalizado? ¿Estás diciendo solo para qué script ocurrió el error?
Porque pensé que la función principal era mostrarte en qué script estás en el momento de la llamada.
Si todas sus secuencias de comandos secundarias son solo funciones que no se ejecutan, entonces realmente no ve la lista de inclusión de archivos () que anida ¿verdad?
Names default to here(1);
fn1 = Save Text File( "$temp/a.jsl", "show(Include File List()); f2 = function({}, include file list());" );
fn2 = Save Text File( "$temp/b.jsl", "include(fn1); f = function({}, include file list());" );
Include( fn2 );
show(f(), f2());Re: Intentando usar Incluir Lista de Archivos ()Entendido. Muchas gracias. La explicación en el índice de scripts o la ayuda definitivamente no es suficiente para entender en qué dirección va el anidamiento: o bien todos los scripts que se incluyen en un script se han llamado forma o todos los scripts que provienen de donde llamó a la raíz.Re: Intentando usar Incluir Lista de Archivos () @vince_faller Es bastante seguro que llamar a IncludeFileList desde una función definida por el usuario debe devolver la pila actual de archivos de inclusión y no la pila que existía cuando se definía la función. Como sugiere su ejemplo, puede capturar la pila en el momento de la definición de la función ejecutando IncludeFileList dentro del archivo incluido, pero fuera de una definición de función.
Creo que uno de los mejores casos de uso es obtener el nombre del archivo actual del elemento de la lista 1.