Connect failed: Connection timed out

[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:
(1834 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:
(1801 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: 2760

20. Nov 2013, 11:59
Beitrag # 3 von 5
Beitrag ID: #519915
Bewertung:
(1784 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:
(1724 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:
(1646 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