Hallo allerseits,
Ich habe versucht, einige Funktionen in ein Skript zu implementieren, um mir das Leben zu erleichtern, und bin möglicherweise auf einen Fehler beim Abrufen von Pfaden für gespeicherte / nicht gespeicherte Datentabellen gestoßen. Ich würde gerne wissen, ob dieses Verhalten bekannt ist / von anderen Benutzern gesehen wurde oder ob es durch meinen Code verursacht wurde (und wenn ja, wäre eine Lösung natürlich sehr willkommen :-)).
Ich wollte ein erstelltes Dashboard und die entsprechende Datentabelle über Schaltflächenskripte im eigentlichen Dashboard speichern. Hier ist der relevante Auszug aus dem Skript:
//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)
)
);Dies funktioniert unter normalen Bedingungen recht gut. Ich bekomme Probleme, wenn ich versuche, eine bereits vorhandene Datei über diesen Dialog auszuwählen, um sie zu ersetzen, aber die alte Datei ist immer noch geöffnet. Das löst natürlich eine Fehlermeldung aus. Wenn ich jetzt die alte Datei schließe und erneut versuche, die Datei zu ersetzen, wird weiterhin eine Fehlermeldung angezeigt, die auf mein Skript hinweist. Wie es scheint (vgl. (siehe unten) Beim Abrufen des Dateipfads der übergeordneten Datentabelle wird im zweiten Durchlauf ein diskreter Dateipfad zurückgegeben, als ob die Datentabelle gespeichert worden wäre. Dies ist jedoch nicht der Fall. Ich habe auch den entsprechenden Auszug aus dem Protokoll mit ein wenig undurchsichtigen und zusätzlichen Kommentaren kopiert:
1. Lauf:
dat = DataTable ("XXX");
rootpath = "XXX.jmp"; <- Name für nicht gespeicherte Datentabelle!
Bool = 0;
path = diskreter Dateipfad ";
Datei kann nicht gespeichert werden.
2. Lauf:
dat = DataTable ("XXX");
rootpath = "diskreter Dateipfad"; <- diskreter Dateipfad, als ob die Datentabelle gespeichert worden wäre
Bool = 1;
Ungültiges Argument in Auswahldatei: Verzeichnis "Diskreter Dateipfad" nicht im Zugriff oder in der Auswertung von "Auswahldatei" gefunden. Auswahldatei / * ### * / ("Verzeichnis zum Speichern auswählen ...", Startpfad,
{"JMP / HTML-Dateien | jmp; jsl; jrn; html", "Alle Dateien | *"}, 1, 1, DashName) <- Fehler aufgrund der Tatsache, dass der übertragene "rootpath" nicht existiert.
Hat jemand so etwas gesehen oder sieht jemand einen Fehler im Code, der dieses Verhalten erklären könnte?
Freundliche Grüße,
Malte
Bei jeder Gelegenheit können Sie ein Skript erstellen, um zu zeigen, was Sie sagen. Verwenden Sie einfach eine große Klasse oder so.
So wie es aussieht, versuchen Sie, einen Pfad "Diskreter Dateipfad" zu verwenden, der für mich nichts mit einem Pfad zu tun hat. Das zweite Argument muss ein Pfad sein.