Qual è un modo corretto per gestire i caratteri mancanti?Diciamo che ho scritto uno script bellissimo, che utilizza alcuni caratteri: caratteri standard che potresti trovare su quasi tutti i computer, ma non i caratteri predefiniti di JMP.
Ho distribuito questo script ai miei utenti e ho iniziato a ricevere feedback sui messaggi di errore relativi ai caratteri mancanti.
Sembra che ci siano computer nell'organizzazione che hanno un numero minimo di caratteri installati.
Quindi ho racchiuso ogni messaggio Font nell'istruzione Try (), in questo modo:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
Try((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" )) << Set Font( "Agency FF", 13 ), Write("No Font"));
Il problema è che mi dà ancora un messaggio di errore.

Come scrivo correttamente quanto segue:
Se è installato un carattere, impostare gli elementi della GUI come indicato, altrimenti utilizzare il carattere predefinito.
Consumatori e ricerche di mercatoMiscelazione e pulizia dei datiQualità e ingegneria di processoRi: Qual è un modo corretto per gestire i font mancanti?Sembra che funzioni in questo esempio. Fammi vedere come sarà in una sceneggiatura della vita reale.
Ri: Qual è un modo corretto per gestire i font mancanti?Questo funzionerà, E darti un'indicazione se il <
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
Batch Interactive( 1 );
x = Log Capture( ((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" ))) << Set Font( "Comic Sans MS1", 13 ) );
Batch Interactive( 0 );
if(x!="",Show( x ));
Nota che non c'è try(...) perché <
Ri: Qual è un modo corretto per gestire i font mancanti?Molto strano. Penso che la prossima risposta migliore sia commentare Batch Interactive (0).
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
show(Batch Interactive(1));
((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" ))[1]) << Set Font( "Comic Sans MS1", 13 );
//show(Batch Interactive(0));
Non riesco a spiegare cosa sta succedendo, ma penso che potrebbe essere perché il carattere non viene testato fino a quando non è necessario ... ma non riesco a capire come fare un'attesa (1) che lo risolva.
Modifica: ha inviato una nota al team di sviluppo.
Edit2: la prossima idea è migliore...
Ri: Qual è un modo corretto per gestire i font mancanti?Stranamente, questo non funziona:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = dt << Bivariate( Y( :height ), X( :weight ) );
rbiv = biv << Report;
Batch Interactive(1);
Try((rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" )) << Set Font( "Agency FF", 13 ), (rbiv << XPath( "//AxisBox/MouseBox/DropBox/TextEditBox" )) << Set Font( "Agency FB", 13 ));
Batch Interactive(0);
mentre questo funziona:
Batch Interactive(1);
throw("Test");
Batch Interactive(0);
Ri: Qual è un modo corretto per gestire i font mancanti?Come posso impedire la visualizzazione degli avvisi di JMP?è un punto di partenza, non il migliore...
C'è una funzione,
batch Interactive(1);
che imposta JMP in lotto modalità che presuppone che nessun utente sia alla tastiera e accetta la risposta predefinita del pulsante. Questo è un po' indesiderabile interattivo mode perché potresti non notare un messaggio nel registro. Puoi impostarlo su 0 subito dopo l'istruzione che potrebbe attivare un dialogo semi-atteso ma indesiderato.
Ogni chiamata restituisce anche il valore precedente se si desidera utilizzare un meccanismo simile allo stack per ripristinare il valore.
Ri: Qual è un modo corretto per gestire i font mancanti?Sono stato in grado di trovare solo un post su Python con questo pezzo di codice senza molte spiegazioni:
# Set the matplotlib.pyplot interactive flag to false
_JMPpp.interactive(False)
Qualsiasi aiuto sarebbe molto apprezzato.
Ri: Qual è un modo corretto per gestire i font mancanti?Lontano dal mio computer, ma credo che la risposta sia utilizzare il flag interattivo batch per sopprimere la finestra di dialogo. Penso che la bandiera sia ancora priva di documenti e dovrai cercare all'interno di questa comunità per vedere come funziona. Potresti anche trovare utile utilizzare la funzione di acquisizione del registro per catturare il testo che sarebbe nella finestra di dialogo per diagnosticare cosa è successo, oppure potresti essere soddisfatto del carattere predefinito che ottieni comunque.
modifica: collegamento a La nota di Wendy su Batch Interactive