Hallo Michael,
hier kommt endlich meinen Antwort.
Zuerst Grundsätzliches. Die Zahlen in den Textboxen sind – wie Du richtig
sagst – Text. Und mit Textketten kann man nicht Rechnungen durchführen.
Die "Worte" müssen zuerst in Dezimalzahlen (= real) umgewandelt werden:
---
"0.02"
as real ---
Das Ergebnis ist 0.02
Wenn man aber an einen Text, welcher aus Ziffern besteht, eine Multiplikation
anfügt, dann wird die Umwandlung automatisch vorgenommen:
---
"0.02" * 0.03937
---
Das Resultat dieser Rechnung sieht aber komisch aus:
7.874E-4 Sobald ein Wert eine bestimmte Grenze unterschreitet, dann wird er in
exponentieller Schreibweise zurückgegeben. Man kann damit immer noch rechnen,
aber zum Einsetzen in Deinem Text muss man ihn aufbereiten.
Das "E-4" am Schluss bedeutet, dass der Dezimalseparator in Wirklichkeit vier
Stellen nach links gerückt werden muss:
---
0.0007874
---
Laut Deinen Beispielen werden die Nachkommastellen auf vier Ziffern begrenzt.
Man sollte die weiteren nicht einfach abschneiden, sondern aufrunden:
---
"0.0008"
---
Für dieses Umwandeln in eine lesbarere Textkette könnte man die Scripting
Addition "Satimage" einsetzen:
---
set curStr to "0.02"
set tmpVal to (
curStr * 0.03937)
set inVal to format tmpVal into "0.0000"
---
Das funktioniert gut unter Mac OS X. Aber mit "Satimage 1.8.5" unter
Mac OS 9.2.1 kommt eine Fehlermeldung. Ich habe das Umwandeln deshalb
durch reines AppleScript ersetzt.
Das folgende Script benutzt dennoch die Satimage OSAX. Zum Ersetzen von
"[mm]" durch "[mm/inch]". Falls Du diese Scripting Addition noch nicht installiert
hast, kannst Du sie hier herunterladen: http://www.fachhefte.ch / den Link
"AppleScripts" betätigen und das Verzeichnis "z_additions_os_9" öffnen.
Das Stuffit-Archiv heisst "Satimage.sit".
Bevor man ein Script auf alle Textboxen eines Dokuments loslässt, muss man
sicher sein, dass die Aufgabe wunschgemäss ausgeführt werden wird.
Deshalb behandelt diese Version nur einen ausgewählten Textrahmen.
---
Code tell document 1 of application "QuarkXPress 5.01" activate tell current box tell story 1 repeat with i from 1 to count of paragraphs set tmpList to {} set curPara to contents of paragraph i if curPara contains "[mm]" then set AppleScript's text item delimiters to tab set curList to every text item of curPara set AppleScript's text item delimiters to {""} repeat with j from 1 to count of curList set curItem to item j of curList if curItem contains "[mm]" then set curItem to change "[mm]" into "[mm/inch]" in curItem set end of tmpList to curItem else try curItem / 2 set inVal to my convMM(curItem) set end of tmpList to curItem & " / " & inVal on error set end of tmpList to curItem end try end if end repeat set AppleScript's text item delimiters to tab set curString to every item of tmpList as string set AppleScript's text item delimiters to {""} set contents of paragraph i to curString end if end repeat end tell end tell end tell on convMM(curNum) set curNum to ((((curNum * 0.03937) * 10000) + 0.5) div 1) / 10000 set curNum to curNum as string if curNum contains "E-" then set x to offset of "." in curNum set y to offset of "-" in curNum set z to offset of "E" in curNum set decAdjust to text (y - (count of curNum)) thru -1 of curNum as number if x is not 0 then set firstPart to text 1 thru (x - 1) of curNum else set firstPart to "" end if set secondPart to characters (x + 1) thru (z - 1) of curNum as string set convNum to firstPart & secondPart set defNum to "0." repeat with i from 1 to decAdjust - (count of firstPart) set defNum to defNum & "0" end repeat set defNum to text 1 thru 6 of (defNum & convNum & "000") else set defNum to text 1 thru 6 of (curNum & "000") end if return defNum end convMM Das Script geht in einer Schleife die Absätze der ausgewählten Textbox durch,
Setzt den aktuellen Absatz in den Speicher und nimmt die weiteren Aktionen
auch darin vor: Wechsel von "[mm]" zu "[mm/inch]", Aufstellen und Abarbeiten
einer Liste der Werte. Für jeden wird der Handler 'convMM(curNum)' aufgerufen,
damit dieser die Umrechnung vornehmen kann.
Das Ergebnis wird an eine temporäre Liste gehängt, welche am Schluss zur
Textkette verwandelt und in der Textbox eingefügt wird.
Bitte versuche mal, dieses Script zum Laufen zu bringen. Dann sehen wir weiter.
Gruss, Hans