<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />In JMP 11 sto scrivendo un'applicazione di plottaggio che consente all'utente di personalizzare le legende selezionando la colonna di raggruppamento che definisce gli stati di riga. Ciò richiede l'eliminazione della vecchia legenda (eliminando la casella del bordo principale) e l'aggiunta di una nuova legenda.Tuttavia ho scoperto che se il ricalcolo automatico è impostato sulle piattaforme bivariate o di variabilità (non ho testato altre piattaforme), ciò farà riapparire una copia della vecchia legenda oltre a quella nuova, quando la nuova uno viene generato con il comando FrameBox<
Ho anche esaminato l'utilizzo di <Ri: Il ricalcolo automatico (1) fa riapparire le vecchie legende dopo aver eliminato il riquadro del bordo principale.
Oh, quello che ho finito per fare alla fine è usare la funzione dt<Ri: Il ricalcolo automatico (1) fa riapparire le vecchie legende dopo aver eliminato il riquadro del bordo principale.
Quindi ci ho giocato molto e alla fine sono stato in grado di ricreare questo comportamento, anche utilizzando uno dei set di dati integrati.Il codice seguente causerà una sorta di perdita di memoria che provocherà l'arresto anomalo di JMP.
Ecco come ricreare il bug:
(1) creare una piattaforma all'interno di una finestra con il ricalcolo automatico impostato su 1
(2) aggiungere alcune legende
(3) escludere alcune righe
(4) aggiungi un'altra legenda..anche dopo aver eliminato una o entrambe le legende originali e JMP si bloccherà
Il bug si manifesta aumentando gradualmente l'utilizzo della memoria (~ 10 MB/s) da parte di jmp mentre funziona attraverso una perdita di memoria infinita.
Questo bug può essere evitato impostando lo stato escluso su 0 per tutte le righe della tabella (es Per ogni riga (escluso (RowState ()) = 0).
Un'altra stranezza attivata dal ricalcolo automatico è il fatto che le legende non verranno eliminate a meno che non vi sia un ritardo forzato prima di eliminare la legenda dopo che è stata creata.Se il ricalcolo automatico è impostato su 0, l'eliminazione avviene senza problemi.
//codice che va in crash
Nomi Predefinito A Qui( 1 );
Prova(CLose(dt,nosave));
dt = Open( "$SAMPLE_DATA/Big Class.jmp",invisible );
dt<
obj = NewWindow("test",biv_container = HLlistbox(biv = Bivariate( Y( :weight ), X( :height ),Automatic Recalc(1))));
/*
data_filter_container = ScrollBox(Size(200,500),data_filter = dt << Filtro dati( Aggiungi filtro( colonne( :Sesso, :Età, :Nome, :Altezza, :Peso ) )));
data_filter<
obj[OutlineBox("Bivariate Fit of weight By height")]<
obj[OutlineBox("Bivariate Fit of weight By height")][FrameBox(1)]<
obj[OutlineBox("Bivariate Fit of weight By height")][FrameBox(1)]<
obj[OutlineBox("Bivariate Fit of weight By height")][FrameBox(1)]<
dt<
//Show(Per ogni riga(Excluded(RowState()) = 0));
//dt<
wait(0.1);//tempo di ritardo forzato necessario per eliminare la legenda dei colori
obj[OutlineBox("Bivariate Fit of weight By height")][BorderBox(2)]<
obj[OutlineBox("Bivariate Fit of weight By height")][FrameBox(1)]<Ri: Il ricalcolo automatico (1) fa riapparire le vecchie legende dopo aver eliminato il riquadro del bordo principale.
Ok, quindi ho escogitato una soluzione semplice: ho disattivato il ricalcolo automatico sull'oggetto della piattaforma in questione (utilizzando <