Forenindex » Programmierung/Entwicklung » AppleScript » Dezimal-Separator

Dezimal-Separator

Hans Haesler
  
Beiträge gesamt: 5826

22. Nov 2002, 09:22
Bewertung:

gelesen: 1954

Beitrag als Lesezeichen
Liebe Kollegen,

irgendwie stelle ich mich zu dumm an. Ich habe nun einige interessante Scripte gefunden, es geschafft, den nicht standardmäßig installierten Ordner "Scripte" von der CD in den Zusatzmodul-Ordner zu legen, aber nun erscheinen die vorschriftsmäßig nicht in der Script-Palette.

Wer weiß Rat?

Danke,
Christoph

Dezimal-Separator

Hans Haesler
  
Beiträge gesamt: 5826

22. Nov 2002, 09:22
Bewertung:

gelesen: 1953

Beitrag als Lesezeichen
Beim Konvertieren eines Strings in eine Dezimal-Zahl (= 'as real') ...
Code
(paragraph i of priceStrings) 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:
Code
set aString to REReplace aString pattern "\\." with "," 

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