Vielen Dank für die prompte und ausführliche Hilfe! :-)
Nach dem ich Deine Skript-Schnipsel durchgeschaut habe, sind mir einige Dinge aufgefallen:
1. Ich habe einen Fehler von mir noch entdeckt: Ich will an den Stellen kein exit(); sondern ein break; , denn ich will ja nur die Schleife verlassen und nicht das Skript ... :-)
2. Nachdem ich Deinen Vorschlag und auch andere Skripts studiert habe (und Teile davon genommen) und dann noch eigene Feinheiten (hoffentlich korrekte :-) eingefügt habe, bin ich zu folgender Lösung gekommen:
Obwohl ich mir bei der dritten If-Anweisung (im Code blau markiert) nicht ganz sicher bin, ob das alles richtig abfängt: Wenn die Auswahl keine baseline besitzt oder die length 0 ist, wird eine Fehlermeldung ausgegeben und das Skript abgebrochen.
Mmmh. Bei meinem bisherigen Tests hat das ganz gut hingehauen, aber ich bin mir nicht ganz sicher, ob es alles abfängt. Habe ich etwas übersehen?
3. Für diese Abfrage brauche ich eine Schleife, denn es soll in einem Dokument das Skript auch mehrere Male anwendbar sein, mit jeweils eigenen Absatzformaten. Deswegen auch die Nummer in den Absatzformaten.
Nachdem das Try-Catch eine Fehlerbehandlung darstellt, und ich im Buch "InDesign automatisieren" von Gregor Fellenz (auf S. 135, Kapitel 6.11) gelesen habe, daß man diese nur sparsam einsetzen soll, frage ich mich, ob man auch ohne Fehler-Abfang das abfragen kann.
Gibt es eine Möglichkeit, das ganze abzufragen, ohne eine Fehlermeldung riskieren zu müssen, die man dann mit Try-Catch abfangen muß?
Kann man Try-Catch ohne Bedenken in einer Schleife immer wieder aufrufen?
Lass Dir mal erklären, warum Du try{} catch {} vermeiden sollst, m. E. spricht absolut nichts gegen den Einsatz.
Das einzige, akzeptable Argument wäre vielleicht eine gewisse Geschwindigkeitseinbuße, aber die tritt m. E. nur auf, wenn wirklich ein Fehler auftritt.
Viel wichtiger ist die Wartungsfreundlichkeit und die Lesbarkeit eines Programmes.
Wie schon bei meiner Anfrage geschrieben, bin ich ein Skript-Anfänger. Und nachdem mir das Buch schon sehr geholfen hatte, und ich mich (zumindest :-) bemühe, innerhalb der (dünnen) Kenntnisse die ich mir nach und nach aneigne von Anfang an (einigermaßen) sauberen Code zu schreiben. Und nachdem das in dem Buch stand, daß man damit sparsam umgehen sollte, war ich etwas vorsichtig mit der Verwendung dieser Funktion (Ist wahrscheinlich das falsche Wort dafür? Wie sagt man zu Try-Catch?).
nur kurz zur try/catch-Frage (und dann überlasse ich Dich sehr gerne der Obhut von Werner ;-):
Das einzige Problem, welchem ich schon begegnet bin: Ein try-Wickel – welcher nur dazu dient, eine Fehlermeldung zu unterdrücken – wurde in einer frühen Entwicklungsphase des Scripts eingesetzt.
Dadurch kann beim Testen das Ergebnis verfälscht werden. Und man muss try/catch wieder auskommentieren, um zu erfahren, weshalb es nicht will.
Richtig, try{} catch{} ohne Fehlerbehandlung ist ein ÜBEL, das man sogar in vielen Beispielskripten von Adobe findet, aber niemals angewendet werden sollte.
Ein unterdrückter Fehler führt oft zu Folgefehlern, die dann kaum noch zu finden sind.
Ich hätte nicht gedacht, daß ich so fix so viele hilfreiche Tipps bekomme! Klasse! Danke!
Jetzt sind nur noch folgende Fragen dazu offen:
Nachtrag: Bei der Tabulatoren-Auslesung bzw. -Zuweisung scheint grundsätzlich noch etwas falsch zu laufen. Die Positionen werden richtig übernommen, nur komischerweise die Ausrichtung (alignment) nicht und (falls vorhanden) Ausrichtungs-Zeichen (alignmentCharacter) und/oder Füll-Zeichen (leader) auch nicht.
Da scheint er nicht alles korrekt im Array an der gleichen Stelle zu speichern und/oder in das Absatzformat zu überführen.
Sollte/kann ich sicherheitshalber alle Tabstops im Absatzformat vorher löschen? Wobei ich das Absatzformat ja selbst anlege ... Bzw. darf ich alignmentCharacter und leader nicht zuweisen, wenn sie bei dem entsprechenden Tabstop nicht existieren bzw. aktiv sind?
ich entschuldige mich, daß ich nicht gleich eine Testdatei beigefügt habe, ich habe etwas zu schnell "geschossen" ...
Ich wollte sie beifügen, aber diese Funktion scheint nur "Member" zur Verfügung zu stehen. Ich werde heute abend nochmal schauen, wie ich "Member" werden kann und mich dann nochmal mit einem Testdokument melden.
Vielleicht solltest Du mal ein wenig Lesen:
Bücher und weitere Infos
Die beiden Bücher, die ich noch nicht habe, sind bestellt. :-)
Vielen Dank für den Tipp!
Kurz:
...
Das werde ich heute abend auch mal überprüfen! Danke!