[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Schleifenproblem

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

Schleifenproblem

Stefan Oe
Beiträge gesamt: 42

25. Mai 2012, 11:53
Beitrag # 1 von 3
Bewertung:
(810 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, ich arbeite mit InDesign CS5 auf Mac OSX 10.5.8.

Ein Skript macht beim Durchlauf mehrerer Schleifen an einer Stelle nicht das, was ich erwarte. Hat jemand eine Idee, woran das liegt?

Das Skript sucht bestimmte, mit einem Absatzformat formatierte Absätze und stellt eine Zeile mit einer Preisangabe eine Zeile höher, falls sie dort hineinpasst. Falls sie nicht hineinpasst, macht es den Vorgang wieder rückkgängig. Die Preiszeile wird identifiziert durch ein "e" und einen geschützten Wortzwischenraum.

todo: Nach Bearbeitung des ersten Absatzes findet die Schleife den zweiten formatierten Absatz – im auskommentierten alert wird der Inhalt des zweiten Absatzes korrekt angezeigt. Die Schleife, die dann die erste Zeile des zweiten Absatzes besuchen soll, beginnt aber eine Zeile darüber – das wird mir im zweiten auskommentierten alert angezeigt. Also in einem Absatz, der anders formatiert ist und eigentlich gar nicht angesprochen werden soll.

Code
#target indesign; 

app.findTextPreferences.properties = {appliedParagraphStyle:"Datenblock"};
//alert(app.activeDocument.findText())
var _FormatierteAbsätze = app.activeDocument.findText();

var _ZahlAbsätze = _FormatierteAbsätze.length;

for (var a = 0; a < _ZahlAbsätze; a++) {
//alert(_FormatierteAbsätze[a].contents)

// Zeilenzahl wird gespeichert, um später abgleichen zu können, ob zwei ursprüngliche Zeilen in eine Zeile passen
var _ZeilenzahlAnfang = _FormatierteAbsätze[a].lines.length;
for (var l = 0; l < _ZeilenzahlAnfang; l++) {

//alert(_FormatierteAbsätze[a].lines[l].contents);
if ((_FormatierteAbsätze[a].lines[l].characters[0].contents == "e") && ( _FormatierteAbsätze[a].lines[l].characters[1].contents == SpecialCharacters.NONBREAKING_SPACE)) {

// In der Zeile über der gefundenen Zeile wird ein weicher Umbruch durch ein Komma plus WZR ersetzt, um die gefundene Zeile hochzuschalten
_FormatierteAbsätze[a].lines[l-1].characters[-1].contents = ", "

// Zeilenzahl des bearbeiteten Absatzes wird gespeichert, um abgleichen zu können, ob die hochgeschaltete Zeile in die darüberliegende Zeile passt
var _ZeilenzahlEnde = _FormatierteAbsätze[a].lines.length;

// Falls die Zeile nicht passt, wird er ursprüngliche Zustand wieder hergestellt
if (_ZeilenzahlAnfang == _ZeilenzahlEnde) {
_FormatierteAbsätze[a].lines[l-2].characters[-1].contents = SpecialCharacters.FORCED_LINE_BREAK;
_FormatierteAbsätze[a].lines[l-2].characters[-2].contents = "";
}
}
}
}


Ich würde mich freuen, falls mir jemand über diese Hürde helfen könnte.

Viele Grüße,
Stefan Oe
X

Schleifenproblem

Neil77
Beiträge gesamt: 287

25. Mai 2012, 12:47
Beitrag # 2 von 3
Beitrag ID: #495614
Bewertung:
(790 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

versuche mal, die Absätze in der Schleife rückwärts zu durchlaufen:
Code
for (var a = _ZahlAbsätze - 1; a >= 0; a--) { 


Hilft das?

Grüße, Martin
--
Martin Heise
http://www.martinheise.de


als Antwort auf: [#495612]

Schleifenproblem

Stefan Oe
Beiträge gesamt: 42

15. Jun 2012, 19:55
Beitrag # 3 von 3
Beitrag ID: #496552
Bewertung:
(640 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
ich habe es bislang versäumt, mich für Deinen schnellen Tipp zu bedanken. Das möchte ich hiermit nachholen – das Skript läuft jetzt genau so, wie ich es mir vorgestellt habe und spart eine Menge Handarbeit.
Viele Grüße, Stefan


als Antwort auf: [#495614]

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
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
09.09.2021 - 17.12.2021

Digicomp Academy, Zürich
Donnerstag, 09. Sept. 2021, 13.00 Uhr - Freitag, 17. Dez. 2021, 19.00 Uhr

Lehrgang

Steigen Sie in die Welt des Publishings ein und erlangen Sie die Zertifizierung von Publishing NETWORK. Lernen Sie in diesem Lehrgang Druckmedien professionell zu erarbeiten, druckfertige PDFs zu erstellen und CI/CD-Vorgaben umzusetzen.

Preis: 6'300.– zzgl. 7.7% MWST
Dauer: 18 Tage(ca. 126 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberater AT digicomp DOT ch