hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » [JS] Logging in Skripten (mehrere Bibliotheksdateien)

 



silo
Beiträge: 29

8. Okt 2008, 11:36

Beitrag #1 von 2
Bewertung:

(439 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

[JS] Logging in Skripten (mehrere Bibliotheksdateien)


Hallo Community,

ich versuche gerade einen Log-Mechanismus für meine Skripte umzusetzen.
Dabei soll nach mehr oder weniger umfangreichen Aktionen am Ende eine Meldung an den User rausgehen.

Das Problem dabei ist, dass ich mehrere Dateien verwende und diese Kreuz und Quer inkludiere.

Ich habe einen kleinen Logmechanismus geschrieben, der Funktioniert aber nicht immer. Ich verstehe auch warum, weiss aber nicht wie ich das Problem umgehen kann.

Folgende Situation:
Ich habe vier Dateien.
==> Die erste setzt den Logmechanismus um. Das geschieht in einer kleinen pseudo JavaScriptklasse. Gleichzeitig wird auch eine Instanz erzeugt.
(log.jsx)
Code
var logger = new function() { 
var message = "";
this.getMessage = function() {
alert(message);
}
this.log = function(_msg) {
message += "\n" + _msg;
}
this.log_error = function(_msg) {//...
}
this.log_warning = function(_msg) {//...
}
}


==> Die zweite Datei inkludiert die log Datei und schreibt was rein:
(log.a.jsx)
Code
#include "log.jsx" 
logger.log("ich bin a");
$.writeln("ich bin a");


==> Die dritte ist analog zur zweiten.
(log.b.jsx)
Code
#include "log.jsx" 
logger.log("ich bin b");
$.writeln("ich bin b");


==> In der vierten Datei inkludiere ich alle anderen, schreibe auch was in den Log und gebe den gesamten Log aus:
(log.test.jsx)
Code
#include "log.jsx" 
#include "log.b.jsx"
#include "log.a.jsx"

logger.log("ich bin c");
$.writeln("ich bin c");
logger.getMessage();



Eigentlich sollte er
"ich bin b
ich bin a
ich bin c"
in dieser Reihenfolge ausgeben. In der Konsole ist das auch so, aber in der MessageBox steht nur
"ich bin a
ich bin c".

Ich nehme an das kommt daher, das bei inkludieren von "log.jsx" ein neues Objekt erzeugt wird.
Ich habe es schon versucht mit der deklaration #targetengine "session", aber das half auch nichts.

Es liegt übrigens nicht an der pseudo-Klasse, denn wenn ich in log.jsx einfache Methdoen log(), log_error() einfüge und eine globale Variable deklariere var messages=""; tritt das selbe Problem auf.


Weiss vielleicht jemand einen rat für mich?

Vielen Dank
Silo


(Dieser Beitrag wurde von silo am 8. Okt 2008, 11:44 geändert)
Top

silo
Beiträge: 29

8. Okt 2008, 11:43

Beitrag #2 von 2
Beitrag ID: #369210

Bewertung:

(436 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

[JS] Logging in Skripten (mehrere Bibliotheksdateien)


Hmmm,

interessant (im Sinne von "verstehe ich nicht") ist, das es funktioniert, wenn ich in log.a.jsx und log.b.jsx Funtionen deklariere und darin auf das logger-Objekt zugreife.
Hier scheint es so als würde es trotz der vielen includes nur ein Objekt logger zu geben.

(log.a.jsx)
Code
#include "log.jsx" 

function do_A() {
logger.log("ich bin a");
$.writeln("ich bin a");
}


(log.b.jsx)
Code
#include "log.jsx" 

function do_B() {
logger.log("ich bin b");
$.writeln("ich bin b");
}


(log.test.jsx)
Code
#include "log.jsx" 
#include "log.b.jsx"
#include "log.a.jsx"

do_A();
do_B();

logger.log("ich bin c");
$.writeln("ich bin c");

logger.getMessage();


als Antwort auf: [#369206]

(Dieser Beitrag wurde von silo am 8. Okt 2008, 11:46 geändert)
Top


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » [JS] Logging in Skripten (mehrere Bibliotheksdateien)


^