Essayer d'utiliser Inclure la liste des fichiers()Bonjour à tous,
J'essaie d'utiliser Include File List() et j'obtiens des erreurs. Cela ne fonctionne pas comme je m'y attendais.
Voici un exemple.
J'ai 3 fichiers nommés Include1.jsl, Include2.jsl, Include3.jsl que j'essaie d'inclure dans TestInclude.jsl répertorié ci-dessous :
Clear Log();
//Names Default To Here( 1 );
Clear Symbols();
Clear Globals();
Include( "Include1.jsl" );
Include( "Include2.jsl" );
Include( "Include3.jsl" );
show(Include File List());
Les quatre fichiers se trouvent dans le même dossier.Chacun des trois fichiers inclus a son correspondant
show("IncludeScriptN");où N vaut 1, 2 et 3
Lorsque j'exécute TestInclude, jsl, je m'attends à voir :
"IncludeScript1";
"IncludeScript2";
"IncludeScript3";
Include File List() = {"C:\...\TestingLocaleScipts\TestInclude.jsl", "C:\...\TestingLocaleScipts\Include1.jsl", "C:\...\TestingLocaleScipts\Include2.jsl", "C:\...\TestingLocaleScipts\Include3.jsl"};
A la place je vois ceci :
"IncludeScript1";
"IncludeScript2";
"IncludeScript3";
Include File List() = {"C:\...\TestingLocaleScipts\TestInclude.jsl"}Ainsi, les fichiers inclus SONT effectivement inclus, ils fonctionnent effectivement, mais la fonction ne les affiche pas ? Qu'est-ce que je fais mal?
Merci,
M
Re : Essayer d'utiliser Inclure la liste des fichiers()@vince_faller Il est presque certain que l'appel de IncludeFileList à partir d'une fonction définie par l'utilisateur doit renvoyer la pile actuelle de fichiers d'inclusion et non la pile qui existait lorsque la fonction a été définie. Comme l'indique votre exemple, vous pouvez capturer la pile au moment de la définition de la fonction en exécutant IncludeFileList dans le fichier inclus, mais en dehors d'une définition de fonction.
Je pense que l'un des meilleurs cas d'utilisation consiste à obtenir le nom du fichier actuel à partir de l'élément de liste 1.
Re : Essayer d'utiliser Inclure la liste des fichiers()Compris. Merci beaucoup. L'explication dans l'index de script ou l'aide n'est certainement pas suffisante pour comprendre dans quelle direction va l'imbrication : soit c'est tous les scripts qui sont inclus dans un script qu'il a été appelé formulaire ou tous les scripts qui viennent d'où il a appelé la racine.Re : Essayer d'utiliser Inclure la liste des fichiers()@Craige_Hales
Retraité et toujours actif ?
Pouvez-vous expliquer ce que vous entendez par rapport d'erreur personnalisé ?Dites-vous juste pour quel script l'erreur s'est produite?
Parce que je pensais que la fonction principale était de vous montrer dans quel script vous vous trouviez au moment de l'appel.
Si tous vos scripts enfants ne sont que des fonctions qui ne s'exécutent pas, vous ne voyez pas réellement l'imbrication include file list(), n'est-ce pas ?
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 : Essayer d'utiliser Inclure la liste des fichiers()La fonction renvoie l'imbrication actuelle des fichiers inclus. Au niveau racine, là où vous l'avez appelé, il n'y a qu'un seul fichier, pas d'imbrication réelle. Essayez de l'appeler depuis l'un des fichiers inclus.
fn1 = Save Text File( "$temp/a.jsl", "show(<SPAN>Include File List</SPAN>())" );
fn2 = Save Text File( "$temp/b.jsl", "include(fn1)" );
Include( fn2 );
Inclure la liste de fichiers() = {"C:\Users\v1\AppData\Local\Temp\a.jsl", "C:\Users\v1\AppData\Local\Temp\b.jsl", "Script.jsl" } ;
script.jsl est le nom du script de niveau racine non enregistré.
La fonction permet d'implémenter un rapport d'erreur personnalisé ; si quelque chose ne va pas dans un essayer() dans le fichier fn1, vous pouvez écrire le attraper clause pour signaler les inclusions imbriquées. Comme effet secondaire sympa, il vous donne également le nom du fichier de script actuel.
Il existe deux manières d'utiliser les fichiers d'inclusion : vous pouvez les considérer comme des bibliothèques de fonctions ou comme des blocs de code à exécuter. Les Inclure la liste de fichiers n'est pas très utile s'il s'agit de bibliothèques de fonctions car la plupart du code ne s'exécute pas pendant l'exécution de l'include... il définit les fonctions et les retours. Mais si le fichier inclus est un bloc de code qui s'exécute lorsqu'il est inclus et peut inclure plus de blocs de code, alors Inclure la liste de fichiers peut être utile pour le débogage.