Forenindex » Programmierung/Entwicklung » AppleScript » Textlänge berechnen

Textlänge berechnen

Anonym
Beiträge gesamt: 22827

9. Mär 2004, 21:13
Bewertung:

gelesen: 2108

Beitrag als Lesezeichen
Hallo zusammen,

hier noch wa zum richtig knobel (hoffentlich)
Gegeben sei zB folgender Text
0815  tab 81927  tab  München  tab  jetzt einlannger Text, manchmal auch zu lang, d.h er geht über den nächsten definierten Tab hinaus  tab  01245798

Wie kann ich feststellen, ob der 'lange Text' zischen die Tabs passt oder zu lang ist..
Sicherlich gibt Quark auf Nachfrage deine Liste mit den definierten Tabpositionen aus (zB in mm)
Auch läßt sich feststellen, dan welcher Stelle in der Zeile ein Tab vorkommt.

Wie kann man/ich feststellen, ob der Text da rein paßt oder nicht.. Einfach die Anzahl der Zeichen zählen reicht nicht. Der Text ist nicht in Courier, das wäre zu einfach :-)

Und jetzt viel Spaß beim rätseln. Eine spätere Lösung kann ich nicht bieten.

Textlänge berechnen

Hans Haesler
  
Beiträge gesamt: 5826

9. Mär 2004, 23:26
Bewertung:

gelesen: 2107

Beitrag als Lesezeichen
Hallo Michael,

aber vielleicht kannst Du beurteilen ob folgender Ansatz brauchbar ist. ;-)

Dieses Snippet ist der besseren Lesbarkeit halber nicht mit Fehlermeldungsvorsorgen ausgestattet. Aus dem gleichen Grund adressiert es "hardcoded" den ersten Absatz der ausgewählten Box. In der Annahme, dass mindestens vier Tabstops definiert sind, dass vier Tabulatoren vorkommen und dass der Text auf einer Zeile Platz findet …

Zuerst wird die Position des vierten Tabstops festgestellt. In der nächsten Zeile wird die Position des vierten Tabulators gespeichert. Anschliessend folgt der Test: Wenn das Ende des Textes grösser ist als die Position des Tabstops minus 1 mm, dann ist der Text zu lang.

Wichtig: Die fünf Zeichen <tab> durch einen unsichtbaren Tabulatoren ersetzen.
---
tell document 1 of application "QuarkXPress 4.11"
  tell current box
    tell paragraph 1
      set tab4 to position of item 4 of (get tab list) as real
      set endText to (horizontal offset of character 4 where it is "<tab>") as real
      if endText > (tab4 - 1) then
        display dialog "Der Text ist zu lang." buttons "OK" default button 1 with icon 2
      else
        display dialog "Der Text passt rein." buttons "OK" default button 1 with icon 1
      end if
    end tell
  end tell
end tell
---
Hoffe, dass dies hilft.

Hans Haesler <hsa@ringier.ch>

Textlänge berechnen

Anonym
Beiträge gesamt: 22827

10. Mär 2004, 00:34
Bewertung:

gelesen: 2107

Beitrag als Lesezeichen
Hallo Hans,

das sieht ja sehr gut aus. Werde ich in den nächsten Tagen mal ausprobieren. Ich hätte ja nicht gedacht, das du/man tatsächlich die Zeichenposition eines Zeichen in einer Zeile raus bekommen kann. Auf diese art und Weise läßt sich die Lauflänge eines vorhandenen Textes feststellen.

Wenn das wirklich so klappt wie es aussieht, jage ich dein Snippet einmal über 160 Seiten und jedesmal, wenn es einen Treffer gibt, wird alles was zu lang ist, in die nächste Zeile verschoben. Quark werkelt und ich kann in Ruhe zuschauen und einen Kaffe trinken anstatt selber durch das Register zu scrollen und alles 'zu Fuß' korrigieren.


Gruß Michael

Textlänge berechnen

Hans Haesler
  
Beiträge gesamt: 5826

10. Mär 2004, 08:34
Bewertung:

gelesen: 2107

Beitrag als Lesezeichen
Hallo Michael,

immer diese bequemen Anwender! ;-)

Achtung: Bei diesem Umfang müssen unbedingt alle Tricks, welche mit XPress 4.11
die Ausführung beschleunigen können, eingesetzt werden:
&#150; 'set tool mode to drag mode' (wählt das Objektwerkzeug aus)
&#150; 'set measurements showing to false' (verbirgt die Masspalette)
- 'set style sheets showing to false' (die Stilvorlagenpalette ebenfalls verbergen)
&#150; testen, ob das Starten des Scripts ab OSA Menu Vorteile bringt
&#150; eventuell das Dokument mit Doppelklick auf die Titelleiste minimieren

Bin gespannt auf das Ergebnis!

Hans Haesler <hsa@ringier.ch>

Textlänge berechnen

Anonym
Beiträge gesamt: 22827

11. Mär 2004, 19:35
Bewertung:

gelesen: 2107

Beitrag als Lesezeichen
Die Zeile "set tab5 to position of item 5 of (get tab list) as real" (aTab ist ein Tab, funktioniert nur in Quark 6, Quark 4 und 5 bringen nur die bescheidene Meldung: data FXHM011460C2 kann nicht in real umgewandelt werden :-((

Warum  macht Qaurk hier den Sielverderber. Muß ich jetzt wirklich die Rohdaten (rawdata) zu Fuß umwandeln. 011460C2 könne wohl der gesuchte Wert im Binärformat für reals sein. Aber ich will doch nicht in C programieren,und die Bits und Bytes einzeln begrüßen.

Gruß Michael

ACHTUNG: Der Spielverderber ist OS X oder die Classicumgebung :-(
Unter OS 9 funktioniert es mit Quark 4

Textlänge berechnen

Hans Haesler
  
Beiträge gesamt: 5826

11. Mär 2004, 21:04
Bewertung:

gelesen: 2107

Beitrag als Lesezeichen
Hallo Michael,

genau: das Beispiel mit QuarkXPress 4.11 funktioniert hervorragend unter Mac OS 9.2.2. Die "bescheidene Meldung" lässt darauf schliessen, dass Du XPress 4 und 5 im Classic-Modus laufen hast. Der Spielverderber ist nicht Quark, sondern Apple.

Wenn die Kombination "Mac OS X / QuarkXPress 4.11" wirklich notwendig ist, dann muss den Umwandlungen nachgeholfen werden mit dem expliziten Einsatz von 'coerce'. Und damit ich jetzt nicht Quatsch rauslasse, muss ich halt den Classic-Modus anwerfen. :-((

Hier ist die Lösung, welche mit QuarkXPress 4.11 unter Mac OS X 10.3.2 im Classic-Modus funktioniert:
Code
set tab5 to [b]coerce (position of item 5 of (get tab list)[b]) to real 

Die Änderungen sind fett hervorgehoben. Das Wort 'coerce', ein Klammernpaar und das 'as' durch 'to' ersetzen.

Und hier noch etwas Lektüre zum Thema "explizites coerce":

&#150; Quark und Coerce - keine % Angaben: http://www.page-online.de/page/forum/viewthread/1979
&#150; Nochmals: ein "mysteriöses" Format: http://www.page-online.de/page/forum/viewthread/1815
&#150; Quark in Classic Umgebung nicht zu scripten: http://www.page-online.de/page/forum/viewthread/1788

Hans Haesler <hsa@ringier.ch>

Textlänge berechnen

Anonym
Beiträge gesamt: 22827

11. Mär 2004, 21:22
Bewertung:

gelesen: 2107

Beitrag als Lesezeichen
Vielen Dank, das du dir die Mühe mit Classic gemacht hast.
So muß ich nicht erst mit OS 9 booten.

Jetzt werde ich mal weiter basteln und aus deinen Anregungen eine "Fehlersuche und Autokorrektur" zusammen setzen.

Gruß Michael