Salut à tous,
J'essayais d'implémenter des fonctionnalités dans un script pour me simplifier la vie et je suis peut-être tombé sur un bogue concernant la récupération du chemin d'accès aux tables de données enregistrées / non enregistrées. Je voudrais savoir si ce comportement est connu / a été constaté par d'autres utilisateurs ou s'il peut être causé par mon morceau de code (et si oui, une solution serait très appréciée bien sûr :-)).
Je voulais sauvegarder un tableau de bord construit et le tableau de données respectif via des scripts de boutons dans le tableau de bord réel. Voici l'extrait pertinent du script:
//set root path to nothing
rootpath = "";
// create link to the "parent data table"
cw = current window ();
ListBivar = (cw << xpath("//OutlineBox[@helpKey='FitGroup']"));
script = ListBivar[1] << get scriptable object;
dat = script << get data table;
DashName = dat << get window title;
show (dat);
// retrieve file path of "parent data table"
rootpath = dat << get path;
show (rootpath);
Bool = Contains (rootpath, "discrete file path" );
show (Bool);
If (Bool == 1, startpath = rootpath,
Bool == 0, startpath = "discrete file path",
);
path = Pick file ("choose directory to save...", startpath, {"JMP/HTML files|jmp;jsl;jrn;html", "All files|*"}, 1, 1, DashName);
show (path);
If ( path == "", Throw (1) ,
If(Right(path, 4) != ".jmp",
path = path||".jmp";
dat << save (path),
dat << save (path)
)
);Dans des conditions normales, cela fonctionne assez bien. Je commence à avoir des problèmes lorsque je tente de choisir un fichier existant via cette boîte de dialogue pour le remplacer, mais l'ancien fichier est toujours ouvert. Cela - bien sûr - jette un message d'erreur. Si je ferme maintenant l'ancien fichier et essaie à nouveau de le remplacer, je reçois toujours un message d'erreur indiquant cette fois-ci mon script. Comme il semble (cp. ci-dessous), lors de la deuxième exécution, la récupération du chemin de fichier de la table de données parent restitue un chemin de fichier discret, comme si la table de données avait été sauvegardée - ce qui n'est pas le cas. J'ai également copié l'extrait respectif du journal avec un peu d'obscurcissement et des commentaires supplémentaires:
1ère manche:
dat = DataTable ("XXX");
rootpath = "XXX.jmp"; <- Nom de la table de données non sauvegardée!
Bool = 0;
chemin = chemin du fichier discret ";
Impossible de sauvegarder le fichier.
2e manche:
dat = DataTable ("XXX");
rootpath = "chemin du fichier discret"; <- chemin du fichier discret, comme si la table de données avait été sauvegardée
Bool = 1;
Argument non valide dans le fichier de sélection: répertoire "chemin du fichier discret" non trouvé dans l'accès ou l'évaluation de "Pick File", fichier de sélection / * ### * / ("choisir le répertoire dans lequel enregistrer ...", chemin de départ,
{"Fichiers JMP / HTML | jmp; jsl; jrn; html", "Tous les fichiers | *"}, 1, 1, DashName) <- erreur due au fait que le "chemin d'accès" transféré n'existe pas.
Quelqu'un a-t-il déjà vu quelque chose comme ceci ou a-t-il remarqué une faille dans le code qui pourrait expliquer ce comportement?
Meilleures salutations,
Malte
Toute chance que vous puissiez faire un script pour montrer ce que vous dites, utilisez simplement une grande classe ou quelque chose.
À première vue, vous essayez d'utiliser un chemin "chemin de fichier discret", qui ne ressemble en rien à un chemin. Le deuxième argument doit être un chemin.