Beim Konvertieren eines Strings in eine Dezimal-Zahl (= 'as real') ...
... kommt die Fehlermeldung, dass dies nicht möglich sei. Die Textkette sieht aber
wie eine Zahl aus (z.B. "37.50"). Es ist kein alphabetisches Zeichen darin, welches
die Umwandlung verhindern könnte.
Des Rätsels Lösung: Der Dezimal-Separator muss jenem entsprechen, welcher im
Kontrollfeld "Zahlenformate" definiert ist. Steht dort ein Komma (das Vorgabezeichen
für das deutsche Format; in der Schweiz ist es ein Punkt), dann gibt es zwei Lösungen.
1) Im String muss der Punkt gegen ein Komma ausgetauscht werden ...
Dieses Austauschen muss nicht unbedingt im Original, z.B. in einer XPress-Textbox
geschehen. Es kann auch im Speicher, in der Variablen, welcher der String zugewiesen
ist, vorgenommen werden. Die komfortabelste Lösung: ein Suchen/Ersetzen-Lauf mit
der Scripting Addition "RegEx Commands" (erhältlich bei <a href="http://www.lazerware.com" target="_blank">http://www.lazerware.com</a> ).
Angenommen, die Variable 'aString' enthält einige Absätze, welche je einen Preis
(ähnlich wie oben) enthalten. Dieser Befehl genügt:
Das Besondere daran ist, dass der Punkt in den RegEx-Commands als Sonderzeichen
definiert ist. Dieser Status muss deshalb im Suchstring mit einem Backslash
aufgehoben werden. Sonst wird die Textkette in eine Reihe von Kommata verwandelt,
weil der Punkt jedes Zeichen vertritt.
Weil aber der Backslash auch ein Sonderzeichen ist, muss auch dieser entschärft
werden. Mit einem ... Backslash.
2) ... oder die Definition im Kontrollfeld ändern.
Im Kontrollfeld "Zahlenformate" anstelle des Kommas einen Punkt eingeben.
Anschliessend die Maschine neu starten.
Diese Variante hat zwar Auswirkungen auf die Anzeige des Separators in Fenstern und
Paletten von QuarkXPress, sollte aber kein Problem sein.
Hans Haesler