Tentativo di utilizzare Include Files List()Ciao a tutti,
Sto cercando di utilizzare Include File List () e sto ricevendo errori. Non funziona come mi sarei aspettato.
Ecco un esempio.
Ho 3 file di file denominati Include1.jsl, Include2.jsl, Include3.jsl che sto cercando di includere in TestInclude.jsl che è elencato di seguito:
Clear Log();
//Names Default To Here( 1 );
Clear Symbols();
Clear Globals();
Include( "Include1.jsl" );
Include( "Include2.jsl" );
Include( "Include3.jsl" );
show(Include File List());
Tutti e quattro i file sono nella stessa cartella.Ciascuno dei tre file inclusi ha il corrispondente
show("IncludeScriptN");dove N è 1, 2 e 3
Quando eseguo TestInclude,jsl, mi aspetto di vedere:
"IncludeScript1";
"IncludeScript2";
"IncludeScript3";
Include File List() = {"C:\...\TestingLocaleScipts\TestInclude.jsl", "C:\...\TestingLocaleScipts\Include1.jsl", "C:\...\TestingLocaleScipts\Include2.jsl", "C:\...\TestingLocaleScipts\Include3.jsl"};
Invece vedo questo:
"IncludeScript1";
"IncludeScript2";
"IncludeScript3";
Include File List() = {"C:\...\TestingLocaleScipts\TestInclude.jsl"}Quindi, i file inclusi SONO davvero inclusi, funzionano davvero, ma la funzione non li mostra? Che cosa sto facendo di sbagliato?
Grazie,
M.
Re: Tentativo di utilizzare Include Files List()@vince_faller Abbastanza sicuro che chiamare IncludeFileList da una funzione definita dall'utente deve restituire lo stack corrente di file di inclusione e non lo stack che esisteva quando la funzione veniva definita. Come suggerisce il tuo esempio, puoi acquisire lo stack al momento della definizione della funzione eseguendo IncludeFileList all'interno del file incluso, ma al di fuori di una definizione di funzione.
Penso che uno dei migliori casi d'uso sia ottenere il nome del file corrente dall'elemento 1 dell'elenco.
Re: Tentativo di utilizzare Include Files List()Inteso. Molte grazie. La spiegazione nell'indice di scripting o nella guida non è sicuramente sufficiente per capire in che direzione va l'annidamento: o sono tutti gli script che sono inclusi in uno script che è stato chiamato form o tutti gli script che provengono da dove ha chiamato a quello root.Re: Tentativo di utilizzare Include Files List()@Craige_Hales
Pensionato e ancora al lavoro?
Puoi spiegare cosa intendi con la segnalazione degli errori personalizzata?Stai dicendo solo per quale script si è verificato l'errore?
Perché pensavo che la funzione principale fosse mostrarti in che copione ti trovi al momento della chiamata.
Se tutti i tuoi script figli sono solo funzioni che non vengono eseguite, in realtà non vedi l'annidamento include file list() giusto?
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: Tentativo di utilizzare Include Files List()La funzione restituisce l'annidamento corrente dei file inclusi. A livello di root, dove l'hai chiamato, c'è solo un file, nessun effettivo annidamento. Prova a chiamarlo da uno dei file inclusi.
fn1 = Save Text File( "$temp/a.jsl", "show(<SPAN>Include File List</SPAN>())" );
fn2 = Save Text File( "$temp/b.jsl", "include(fn1)" );
Include( fn2 );
Includi elenco file() = {"C:\Utenti\v1\AppData\Local\Temp\a.jsl", "C:\Utenti\v1\AppData\Local\Temp\b.jsl", "Script.jsl" };
script.jsl è il nome dello script a livello di root non salvato.
La funzione serve per implementare la segnalazione degli errori personalizzata; se qualcosa va storto in a Tentativo() nel file fn1, puoi scrivere il file catturare clausola per segnalare gli include nidificati. Come interessante effetto collaterale, ti dà anche il nome del file di script corrente.
Esistono due modi per utilizzare i file include: potresti pensarli come librerie di funzioni o potresti pensarli come blocchi di codice da eseguire. Il Includi elenco file non è molto utile se sono librerie di funzioni perché la maggior parte del codice non è in esecuzione mentre l'inclusione è in esecuzione... definisce le funzioni e ritorna. Ma se il file di inclusione è un blocco di codice che viene eseguito quando incluso e potrebbe includere più blocchi di codice, allora Includi elenco file potrebbe essere utile per il debug.