[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Problem mit aus Datei gelesenem Wert

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Problem mit aus Datei gelesenem Wert

mahony2k
Beiträge gesamt: 8

20. Nov 2013, 10:40
Beitrag # 1 von 5
Bewertung:
(1835 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

erst einmal vielen Dank für die vielen tollen Skripte und Anregungen!

Ich musste für unseren Workflow das Skript "SpracheWechseln" von Hans Haesler ein wenig anpassen, damit ich zusätzlich mittels einer Checkbox einstellen kann, ob Silbentrennung in der entsprechenden Sprache erlaubt sein soll, oder nicht.

Soweit habe ich auch alles hinbekommen und ich habe es sogar geschafft, dass ich die Einstellung der Checkbox mit in die selbe Textdatei speichere.

Nun habe ich aber beim Ausführen, das Problem, dass obwohl in der Datei true oder false gespeichert wird, und sogar richtig wieder aus der Datei gelesen wird (wie ich mittels alert sehen kann), der ausgelesene Wert für den checkedState beim erneuten Ausführen nicht entsprechend voreingestellt wird. Stattdessen bekomme ich die Fehlermeldung dass der Parameter ungültig ist. Wenn ich checkedState manuell auf true setze geht es, aber in folgender Form nicht, obwohl der alert bestätigt, dass die Variable curHyph ebenso "true" ist:

Code
with (dialogRows.add()) {    
alert ("curHyph \n" + curHyph);
checkHyph = checkboxControls.add({staticLabel:"&Ohne Silbentrennung", checkedState:curHyph});


Wo liegt mein Denkfehler?

Vielen Dank schon mal!

Grüße,
Toni



Hier der ganze Code:
Code
var myDoc = app.activeDocument; 
var myScriptFolder = app.activeScript;


//if (parseFloat(app.version) < 6)
//Sprachen();
//else
//app.doScript(Sprachen, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, "Sprache wechseln");


//function Sprachen() {

// die Liste(n) der verfügbaren Sprachen
var allLang = app.languagesWithVendors;
var lngNameList = app.languagesWithVendors.everyItem().name;
var locLangList = app.languagesWithVendors.everyItem().name;
locLangList.sort();
var noLang = locLangList.pop();
locLangList.unshift(noLang);

// die Datei lesen, in welcher die zuletzt angewendete Sprache und Silbentrennung gespeichert ist
var curLang = 0;
var curHyph = false;
//var tempFolder = Folder.temp;
var f = File((Folder(myScriptFolder)).parent + "/curLang.txt");
fileIsOpen = f.open("r");
if (fileIsOpen) {
try {
curLang = (f.readln())*1;
curHyph = f.readln();
f.close();
}
catch (e) {
try {
f.close();
}
catch (e) {
}
}
}

alert ("curLang \n" + curLang);
alert ("curHyph \n" + curHyph);


// Dialoge, welche eventuell im Speicher geblieben sind, löschen
try {
app.dialogs.everyItem().destroy();
}
catch (e) {
}

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// testen, ob ein Dokument geöffnet ist (wenn nicht: den Ordner-Auswahldialog zeigen)
var nDocs = app.documents.length;
if (nDocs == 0) {
var folderObj = File (Folder.selectDialog("Den Ordner auswählen, welcher die InDesign-Dokumente enthält."));
var testObj = "" + folderObj;
if (testObj.match("null")) {
exit();
}
// den Handler aufrufen, welcher die Wahl der neuen Sprache anzeigt
var dialogIndex = askUser();
var newLang = getLang(lngNameList, locLangList, dialogIndex);
// eventuelle Dialoge wegen fehlender Bilder und Schriften ausschalten
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.neverInteract;
// den Inhalt des Ordners auflisten
var allFiles = folderObj.getFiles();

// eine Schleife durch die Dateien
var curName;
for (var i=0; i<allFiles.length; i++) {
curName = allFiles[i].name;
if (curName.match(".indd")) {
try {
// die aktuelle Datei öffnen
app.open(File (allFiles[i]));
changeLanguage(newLang);
app.activeDocument.close(SaveOptions.yes);
}
catch (e) {
}
}
}
// die Dialoge wieder einschalten
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
}
else {
var dialogIndex = askUser();
var newLang = getLang(lngNameList, locLangList, dialogIndex);
var docRef = new Array ();
for (var i=0; i<nDocs; i++) {
docRef.push(app.documents[i].name);
}
var okay = true;
var docName;
for (var i=0; i<docRef.length; i++) {
//app.activeDocument = app.documents.item(docRef[i]); // DEAKTIVIERT, DAMIT NUR AKTIVES DOKUMENT BEARBEITET WIRD
docName = app.activeDocument.name;
if (nDocs>1 && i>0) {
//okay = confirm ("Die Sprache dieses Dokuments ändern?\n\n" + docName); // DEAKTIVIERT, DAMIT NUR AKTIVES DOKUMENT BEARBEITET WIRD
}
if (okay) {
changeLanguage(newLang);
}
}
//app.activeDocument = app.documents.item(docRef[0]); // DEAKTIVIERT, DAMIT NUR AKTIVES DOKUMENT BEARBEITET WIRD
}

// der Handler, welcher die Auswahl der neuen Sprache ermöglicht
var dialogHyph;
function askUser() {
// einen Dialog vorbereiten
var aDialog = app.dialogs.add({name:"Sprache wechseln", canCancel:true});
with (aDialog) {
with (dialogColumns.add()) {
with (dialogRows.add()) {
staticTexts.add({staticLabel:"Neue Sprache:", minWidth:80});
staticTexts.add({staticLabel:"", minWidth:20});
}
with (borderPanels.add()) {
with (dialogColumns.add()) {
var langName = dropdowns.add({stringList:locLangList, selectedIndex:curLang, minWidth:130});
}
}
with (dialogColumns.add()) {
staticTexts.add({staticLabel:"", minWidth:4});
}
with (dialogRows.add()) {
alert ("curHyph \n" + curHyph);
checkHyph = checkboxControls.add({staticLabel:"&Ohne Silbentrennung", checkedState:curHyph});
}
}
}

//alert (checkHyph.checkedState);

// den Dialog anzeigen, die Wahl des Anwenders speichern
if (aDialog.show() == true) {
var dialogIndex = langName.selectedIndex;
dialogHyph = checkHyph.checkedState;
aDialog.destroy();
}
else {
aDialog.destroy();
exit();
}

// die Nummer der Sprache in die Datei schreiben
//var tempFolder = Folder.temp;
var f = File((Folder(myScriptFolder)).parent + "/curLang.txt");
var fileIsOpen = f.open("w");
if (fileIsOpen) {
try {
f.writeln(dialogIndex);
f.writeln(dialogHyph);
f.close();
}
catch (e) {
try {
f.close();
}
catch (e) {
}
}
}
return dialogIndex;

// Silbentrennung in Datei schreiben
//var tempFolder = Folder.temp;
var fh = File((Folder(myScriptFolder)).parent + "/curHyph.txt");
var fhfileIsOpen = fh.open("w");
if (fhfileIsOpen) {
try {
fh.write(dialogHyph);
fh.close();
}
catch (e) {
try {
fh.close();
}
catch (e) {
}
}
}
return dialogHyph;
}
alert (dialogHyph);


// der Handler zum Bestimmen der Sprache
function getLang(lngNameList, locLangList, dialogIndex) {
for (var i=0; i<lngNameList.length; i++) {
if (lngNameList[i] == locLangList[dialogIndex]) {
return i
}
}
}

// der Handler zum Wechseln der Sprache
function changeLanguage(newLang) {
// die Sprache der Absatzformate wechseln
var curLang;
var nParaStyles = app.documents[0].paragraphStyles.length;
for (var i=1; i<nParaStyles; i++) {
try {
curLang = app.documents[0].paragraphStyles[i].appliedLanguage.name;
if (curLang != noLang) {
app.documents[0].paragraphStyles[i].appliedLanguage = allLang[newLang];
}
}
catch (e) {
}
try {
var curHyph = app.documents[0].paragraphStyles[i].hyphenation;
if (dialogHyph == true) {
app.documents[0].paragraphStyles[i].hyphenation = false;
}
}
catch (e) {
}
}

// die Sprache der Absatzformate der Gruppen wechseln
var curGroup
var curGroups = app.documents[0].paragraphStyleGroups;
var curParaStyles;
var nParaStyleGroups = curGroups.length;
for (var i=0; i<nParaStyleGroups; i++) {
curGroup = curGroups[i];
curParaStyles = curGroup.allParagraphStyles;
var nParaStyles = curParaStyles.length;
for (var k=0; k<nParaStyles; k++) {
try {
curLang = curParaStyles[k].appliedLanguage.name;
if (curLang != noLang) {
curParaStyles[k].appliedLanguage = allLang[newLang];
}
}
catch (e) {
}
/*try {
curHyph = curParaStyles[k].appliedLanguage.name; /// SIlbentrennung deaktivieren
if (curLang != noLang) {
curParaStyles[k].appliedLanguage = allLang[newLang];
}
}
catch (e) {
}*/
}
}

// die Sprache der Zeichenformate wechseln
nCharStyles = app.documents[0].characterStyles.length;
for (var i=1; i<nCharStyles; i++) {
try {
curLang = app.documents[0].characterStyles[i].appliedLanguage.name;
if (curLang != noLang) {
app.documents[0].characterStyles[i].appliedLanguage = allLang[newLang];
}
}
catch (e) {
}
}

// die Sprache der Zeichenformate der Gruppen wechseln
curGroups = app.documents[0].characterStyleGroups;
var nCharStyleGroups = curGroups.length;
for (var i=0; i<nCharStyleGroups; i++) {
var curGroup = curGroups[i];
var curCharStyles = curGroup.allCharacterStyles;
var nCharStyles = curCharStyles.length;
for (var k=0; k<nCharStyles; k++) {
try {
curLang = curCharStyles[k].appliedLanguage.name;
if (curLang != noLang) {
curCharStyles[k].appliedLanguage = allLang[newLang];
}
}
catch (e) {
}
}
}

// die Sprache der Texte ändern, damit auch solche ohne Format berücksichtigt werden
app.documents[0].stories.everyItem().appliedLanguage = allLang[newLang];

// die Tabellen auch behandeln
try {
app.documents[0].stories.everyItem().tables.everyItem().cells.everyItem().texts[0].appliedLanguage = allLang[newLang];
}
catch (e) {
}
}
//}

X

Problem mit aus Datei gelesenem Wert

Hans Haesler
  
Beiträge gesamt: 5826

20. Nov 2013, 11:28
Beitrag # 2 von 5
Beitrag ID: #519910
Bewertung:
(1802 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Toni,

der Inhalt von 'curHyph' – aus der Datei eingelesen – ist ein String.
Dieser muss geprüft und in die entsprechende Konstante umgewandelt werden:

Code
if (curHyph == "true") { 
curHyph = true;
else {
curHyph = false;
}

So sollte es klappen.

Gruss, Hans


als Antwort auf: [#519907]

Problem mit aus Datei gelesenem Wert

WernerPerplies
Beiträge gesamt: 2770

20. Nov 2013, 11:59
Beitrag # 3 von 5
Beitrag ID: #519915
Bewertung:
(1785 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Oder etwas kürzer:

statt curHyph
(curHyph == "true")
zuweisen.


als Antwort auf: [#519910]

Problem mit aus Datei gelesenem Wert

mahony2k
Beiträge gesamt: 8

20. Nov 2013, 17:14
Beitrag # 4 von 5
Beitrag ID: #519935
Bewertung:
(1725 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das war's. Super, vielen Dank!


als Antwort auf: [#519910]

Problem mit aus Datei gelesenem Wert

Hans Haesler
  
Beiträge gesamt: 5826

23. Nov 2013, 10:56
Beitrag # 5 von 5
Beitrag ID: #520024
Bewertung:
(1647 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Toni,

bitte sehr.

Der Vollständigkeit halber: Anstelle von true und false können auch 1 und 0 verwendet werden:

Code
if (curHyph == "true") { 
curHyph = 1;
else {
curHyph = 0;
}

Gruss, Hans


als Antwort auf: [#519935]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
18.06.2024

Online
Dienstag, 18. Juni 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

https://www.impressed.de/schulung.php?c=sDetail&sid=328

So optimieren Sie Ihren LFP-Workflow
Veranstaltungen
02.07.2024

Online
Dienstag, 02. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

Kontaktinformation: E-Mailschulungen AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=328

So optimieren Sie Ihren LFP-Workflow