<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Dans JMP 11, j'écris une application de traçage qui permet à l'utilisateur de personnaliser les légendes en sélectionnant la colonne de regroupement qui définit les états de ligne. Cela nécessite de supprimer l'ancienne légende (en supprimant la zone de bordure parente) et d'ajouter une nouvelle légende.Cependant, j'ai constaté que si le recalcul automatique est défini sur les plates-formes bivariées ou de variabilité (je n'ai pas testé d'autres plates-formes), cela entraînera la réapparition d'une copie de l'ancienne légende en plus de la nouvelle, lorsque la nouvelle une est générée avec la commande FrameBox<
J'ai également envisagé d'utiliser la <Re : Le recalcul automatique (1) fait réapparaître les anciennes légendes après la suppression de la boîte de bordure parente.
Oh, ce que j'ai fini par faire, c'est d'utiliser la fonction dt<Re : Le recalcul automatique (1) fait réapparaître les anciennes légendes après la suppression de la boîte de bordure parente.
J'ai donc beaucoup joué avec et j'ai finalement pu recréer ce comportement, même en utilisant l'un des ensembles de données intégrés.Le code suivant provoquera une sorte de fuite de mémoire qui entraînera le blocage de JMP.
Voici comment vous recréez le bogue :
(1) créer une plate-forme à l'intérieur d'une fenêtre dont le recalcul automatique est défini sur 1
(2) ajouter des légendes
(3) exclure certaines lignes
(4) ajouter une autre légende..même après avoir supprimé une ou les deux légendes d'origine et JMP se figera
Le bogue se manifeste par une augmentation progressive de l'utilisation de la mémoire (~ 10 Mo/s) par jmp au fur et à mesure qu'il fonctionne à travers une fuite de mémoire infinie.
Ce bogue peut être évité en définissant l'état exclu sur 0 pour toutes les lignes de la table (c'est-à-dire Pour chaque ligne(exclu(RowState()) = 0).
Une autre bizarrerie activée par le recalcul automatique est le fait que les légendes ne seront pas supprimées à moins qu'il y ait un délai forcé avant de supprimer la légende après sa création.Si le recalcul automatique est défini sur 0, la suppression se produit sans problème.
//code qui plante
Noms par défaut à ici( 1 );
Try(CLose(dt,nosave));
dt = Open( "$SAMPLE_DATA/Big Class.jmp",invisible );
dt<
obj = NewWindow("test",biv_container = HListbox(biv = Bivariate( Y( :weight ), X( :height ),Automatic Recalc(1))));
/*
data_filter_container = ScrollBox(Size(200,500),data_filter = dt << Data Filter( Ajouter un filtre( columns( :Sex, :Age, :Name, :Height, :Weight ) )));
data_filter<
obj[OutlineBox("Ajustement bivarié du poids selon la taille")]<
obj[OutlineBox("Ajustement bivarié du poids selon la taille")][FrameBox(1)]<
obj[OutlineBox("Ajustement bivarié du poids selon la taille")][FrameBox(1)]<
obj[OutlineBox("Ajustement bivarié du poids selon la taille")][FrameBox(1)]<
dt<
//Afficher(Pour chaque ligne(Exclu(RowState()) = 0));
//dt<
wait(0.1);//délai forcé nécessaire pour supprimer la légende des couleurs
obj[OutlineBox("Ajustement bivarié du poids selon la taille")][BorderBox(2)]<
obj[OutlineBox("Ajustement bivarié du poids selon la taille")][FrameBox(1)]<Re : Le recalcul automatique (1) fait réapparaître les anciennes légendes après la suppression de la boîte de bordure parente.
Ok, j'ai trouvé une solution de contournement simple : j'ai désactivé le recalcul automatique sur l'objet de plate-forme en question (en utilisant <