FF_CallScript und FFInclude

thomasfeuster

Mitglied
Registriert
25.01.09
Beiträge
95
Ort
München
Hallo,

ich spiele wieder mal an meinen Scripten herum, um die Automatisierung weiter voran zu treiben. Dabei bin ich auf folgendes Problem gelaufen: Es scheint, dass FFInclude nicht berücksichtigt wird, wenn ich ein Script mit FF_CallScript aufrufe? Vermutlich mache ich aber einfach nur was falsch...

Szenario:
- ich habe eine Reihe von Optimierungen, die ich per JS-Script im Scripting-Bereich drin habe
- wenn aus der UI gestartet, laufen sie problemlos
- wenn per FF_CallScript aufgerufen, führt die erste Referenz auf etwas aus Include auf einen "'xyz' is undefined" Fehler

Ein Beispiel für ein Optimierungsscript ist (man sieht, dass die ganze Funktionalität (SelectImagesBySubString, do_optimize_imagelist) über die beiden Includes reinkommt):

Javascript:
//FFSubmenu=Optimieren
//FFName=Optimieren alle HDRs
//FFInclude=ThomasDaheim\toolbox.js
//FFInclude=ThomasDaheim\optimize\do_optimize_images.js

DEBUG = false;

// Schleife über alle HDRs - unabhängig von der Markierung
var imageList = SelectImagesBySubString(FF_GetSelection(0), ["_enfused.jpg"], Comparison.END);

do_optimize_imagelist(imageList, Optimize.FULL_AUTOCONTRAST);

Wenn ich das per FF_CallScript aufrufen, kommt der Fehler "'Comparison' is undefined / Src: MS JScript runtime error / Line:9".

Da FF_CallScript mit vollständigen Pfaden arbeitet, habe ich auch schon mal versucht, FF_Include mit vollem Pfad zu machen. Das hat aber nicht geholfen.

Für jegliche sachdienlichen Hinweise wäre ich dankbar!
Thomas
 
So, einen ersten Workaround habe ich schon mal gefunden :)

Leider geht ein Test auf "undefined" von Dinge nicht. Also folgender Ansatz:

Vor dem Aufruf setzte ich einen sprechenden Parameter:

Javascript:
FF_SetParam("DO_INCLUDE");
FF_CallScript("ScriptName");

Im Script prüfe ich den und machen bei Bedarf einen manuellen Include:

Javascript:
if (FF_GetParam() == "DO_INCLUDE") {
    // FFInclude not executed - having been called from elsewhere...
    eval(new ActiveXObject("Scripting.FileSystemObject").OpenTextFile("C:\\Users\\thomas\\Documents\\FixFoto\\Script\\ThomasDaheim\\toolbox.js",1,false).ReadAll());
    eval(new ActiveXObject("Scripting.FileSystemObject").OpenTextFile("C:\\Users\\thomas\\Documents\\FixFoto\\Script\\ThomasDaheim\\optimize\\do_optimize_images.js",1,false).ReadAll());
}

Funktioniert wenigstens schon mal...
 
Schick mir ne PN mit gewünschtem Usernamen und E-Mail. Ich richte dir dann ein Konto ein.
 
Hallo Thomas,
schön das durch dich der kleine Kreis der Aktiven bei der Skripting-Wiki ein wenig erweitert wird.
 
Zurück
Oben