File in reteCiao, ho uno script che apre un determinato file su un indirizzo di rete.Quando il computer è connesso a quella rete, è tutto a posto. Ma quando il computer è offline, vorrei che lo script si interrompesse dolcemente, invece di aspettare e aspettare prima che capisca che l'indirizzo non è disponibile. Esiste una funzione per controllare velocemente la disponibilità dei file remoti o meglio ancora la disponibilità della connessione di rete?
Grazie
Matteo
Re: File in reteCiao Dave, l'ho provato ma ci vogliono ancora molti secondi se la risorsa non è disponibile.
Grazie
Matteo
Re: File in reteProva magari a verificare la presenza del file utilizzando Il file esiste prima di provare ad aprirlo?
Re: File in reteprovare a eseguire il ping con il disco di rete; questo è l'esempio centrale. Non posso testarlo completamente senza chiedere a qualcuno di spegnere un disco...
Re: File in reteGrazie, valuterò questa possibilità. In realtà la mia risorsa è un file su un disco di rete, quindi ping non è esattamente il comando che devo usare, ma il concetto di chiamare un comando del sistema operativo è chiaro.
Matteo
Re: File in retequesto script utilizza il ping per ottenere un eco da un server; il testo del ping potrebbe essere leggermente diverso su vari sistemi operativi e il test per "Ricevuto = 1" potrebbe richiedere modifiche. n=1 significa solo ping una volta, w=100 significa non attendere più di 100 ms. La versione per Mac sarà diversa, questa è (appena) testata su Windows.
Ping prende il nome dal suono prodotto dai sonar sottomarini... quindi ascolta l'eco. Ma a differenza di un vero eco, sono possibili altri ritardi con computer occupati. Il tuo ping potrebbe facilmente passare attraverso cinque o più computer e l'eco sarà simile. Puoi giocare con ping in una "scatola dos" come questa:
Using ping in a "dos box"Using ping in a "dos box"Utilizzo del ping in una "scatola dos"
isAvailable = Function( {resource},
{default local},
Contains( RunProgram( executable( "ping" ), options( {"-n 1 -w 100", resource} ), readfunction( "text" ) ), "Received = 1" ) != 0
);
// this succeeds in < .1 second
start = Tick Seconds();
jmp = isAvailable( "jmp.com" );
stop = Tick Seconds();
Show( jmp, stop - start );
// this fails in about 3 seconds
start = Tick Seconds();
fileserver = isAvailable( "jmpsserver" ); // leave out the back slashes and use the first name
stop = Tick Seconds();
Show( fileserver, stop - start );
// this fails in about .2 seconds
start = Tick Seconds();
nonesuch = isAvailable( "x" || Char( Random Integer( 1e15, 9e15 ) ) || ".com" );
stop = Tick Seconds();
Show( nonesuch, stop - start );
jmp = 1; -- jmp.com funziona
stop - start = 0.0333333333255723;
fileserver = 0; -- questo non è il nome del nostro file server
stop - start = 2.26666666672099;
nessuno tale = 0; - non è probabile che sia un vero nome web
arresto - avvio = 0,0500000000465661;
Re: File in reteok, allora potresti voler usare un comando di sistema per verificare se la connessione di rete è disponibile e chiamarla prima di eseguire il resto dello script. Non sono sicuro che durerà meno tempo però. Alcune idee sono scritte nel post che ho citato prima.
Re: File in retegrazie Martino. Sì, sto usando "prova", ma quando non sono connesso alla rete ci vogliono circa 10 secondi prima di uscire.
Matteo
Re: File in retead esempio simile al seguente comando, questo genererà un messaggio o un numero di eccezione se fallisce. Quindi puoi fare qualcos'altro (messaggio, file alternativo, ...). Puoi anche trovare altri suggerimenti in questo thread: Can-JMP-call-a-DOS-Exe
a = Try( Open( networkpath ),0 )<BR />
Re: File in reteCiao Matteo,
hai provato la funzione TRY e/o THORW? Possono catturare se non riesci a trovare il file e saltare fuori. Non sono sicuro che questo risolva il problema che hai descritto poiché probabilmente cercherà anche il percorso. Tuttavia, vale la pena provare se non l'hai verificato finora.
Martino