Hallo Uwe,
zuerst einmal danke für Dein Interesse.
Die Antwort auf Deine Fragen ist ziemlich kompliziert, ich versuche sie mal zumindestens teilweise zu beantworten.
Hintergrund meiner Aktivitäten ist im Moment mein versprochenes Kalendermodul, aber die Logik geht weit darüber diese Anwendung hinaus.
Ich möchte, und ich mache so etwas schon seit Jahren, das Füllen von Dateien ausschließlich über Vorlagen steuern, ich glaube, so etwas läuft hier unter Datenzusammenführung.
vereinfacht:
Der Anwender erstellt eine Vorlage eines sich wiederholendes Blockes und baut in die Vorlage Platzhalter ein.
Diese Platzhalter können unterschiedliche Bedeutung haben, wie z. B. numerischer Kalendertag, zugehöriger Namen des Kalendertages, Feiertage, Kalenderwoche, wenn der zugehörige Tag ein Wochenanfang ist, oder aber auch eine Anmerkungshinweis, bei dem die eigentliche Anmerkung an beleibiebiger anderer Stelle steht usw.
Um diesen Ansprüchen zu genügen, scanne ich normalerweise den Block und sammle alle Platzhalter mit einem Pointer auf ihr Vorkommen in Collections oder Arrays.
Anschließend sortiere ich diese Einträge in die notwendige Reihenfolge und arbeite sie dann ab.
Warum dieser Aufwand:
Beispiel Kalender:
Ein einfacher Monatskalender kann die Monate in Spalten oder in Zeilen enthalten, oder auch chaotisch -> Adventskalender ;-)
Die Tageseinträge können nebeneinander, untereinander oder wie auch immer angeordnet sein.
Als ich jetzt mit der InDesignlösung anfing, ging ich, wohl etwas naiv, davon aus, das InDesign die Vorteile der objektorientieren Programmierung konsequent nutzt, aber es scheint da Brüche zu geben.
Normaler repräsentiert ein Objekt eine Speicherdadresse, an der wiederum Adressen auf andere Objekte abgespeichert sind.
Das schien auch für Absätze zu gelten:
Suchen ich mir einen Absatz, speichere Ihn in eine Variable, dann reicht es, wenn ich den Inhalt in der Variable ändere. Alle Verweise auf diesen Absatz erhalten dann diesen neuen Inhalt.
So die Theorie, bei InDesign habe ich bis jetzt schon zwei Brüche gefunden:
1. Problem mit dem verschwunden Text:
ändere ich den Text des Absatzes in meiner Variable und mache ihn länger, dann wird diese Änderung im Ursprungsabsatz korrekt angezeigt, in meiner Variable merkwürdigerweise nur die ursprüngliche Länge.
2. Paragraphs Collections:
Hier hatte ich erwartet, wie recht üblich, dass eine Verschiebung der Absätze nur die Verschiebung der Pointer auf die Objekte Absatz bedeutet und musste jetzt feststellen, dass InDesign bei der Verschiebung wohl auch Inhalte austauscht und damit bin ich dann auf den Bauch gefallen.
Ich muss jetzt wohl jeden Absatz mit einer Marke versehen, die entweder im Text sitzt (braucht Platz und die Suche dauert relativ lange) oder aber in irgendeiner Form an den Absatz angeklebt wird.
Dies könnten z. B. Notizen, Variablen, verankerte Rahmen und ähnliches sein.
Aber das macht leider alles unendlich viel zusätzliche Arbeit.
So, ich hoffe, ich habe mein Anliegen einigermaßen erklären können.
Vergessen:
Ich möchte jedes mehrmalige Suchen in der Gesamtdatei weitgehend verweiden.
als Antwort auf: [#476381]
(Dieser Beitrag wurde von WernerPerplies am 20. Jul 2011, 14:08 geändert)