A bug in my ASS? Sonderzeichen erzeugen Compiler Fehler

Chief_Wiggum

Chief_Wiggum

Mitglied
Thread Starter
Dabei seit
17.01.2007
Beiträge
99
Reaktionspunkte
0
Hallo Leute,
der Titel dieses Threads lässt schlimmes vermuten ;)

Folgendes:

Ich habe ein Skript in Applescript Studio erstellt, das u.a. die simple Zeile enthält:

Code:
if (theCount ≥ 16) then
-- gemeint ist ein 'gleich-oder-größer-als Symbol,
-- falls es hier nicht richtig dargestellt wird.
(* [I]add your script here[/I] *)
end if

Dies ruft den netten Compiler-Fehler expected expression but found unknown token (-2741)' hervor und das Skript wird nicht ausgeführt.
Das selbe bei dem 'gleich-oder-kleiner-als Symbol' und auch bei den doppelten Anführungszeichen « und »

Seltsam ist ja dabei, dass ASS die Zeichenfolge '>=' von selbst in das 'gleich-oder-größer-als Symbol' wandelt.
Noch seltsamer:
Der gleiche Code im Skripteditor funktioniert einwandfrei

Ich bin gezwungen, die obige Zeile umzuschreiben:
Code:
if not (theCount < 16) then
Dann geht's.

Habe ich irgendwie falsche Zeichen benutzt?
Ich habe die Symbole auch schon versucht, aus der Zeichenpalette zu kopieren. Ohne Erfolg.
Das scheint mir ein dicker Bug zu sein, oder?
Hat jemand ähnliche Erfahrungen gemacht und evtl. sogar eine Lösung?

Besonders wichtig für mich:
Wie "umgehe" ich die dopp. Anf.zeichen?
Bsp: Datei als UTF-8 codiert speichern
Code:
write inhalt to f as class «utf8»

Meine XCode Version ist 2.4.1 auf Mac OS 10.4.11

Grüße,
Clancy Wiggum
 
*g* Ich bin ehrlich gesagt noch gar nie auf die Idee gekommen, Zeichen wie ≥ in Quellcodes zu nutzen ^^ allerdings hab ich vor Applescript auch mit anderen Sprachen zu tun gehabt.

Nein, ich vermute, dass es kein Bug ist: Ich vermute nun einfach mal ins blaue hinein, dass dein Quellcode, da Xcode aus deinem Applescript ja eine Cocoa anwendung macht, durch den Compiler gejagt und nicht wie im Scripteditor vom Applescript Dienstprogramm interpretiert wird. Da der Compiler aber primär für Objective-C & CO ausgelegt ist, versteht er keine Sonderzeichen, sondern nur normalen ASCII Code.

Wie gesagt, ich vermute das nur, also kann es totaler Unfug sein - nicht hauen ;)

Statt französischen Anführungszeichen benutzt du einfach das Zollzeichen, wie in der Programmierung üblich (also das da --> " )
 
Hallo Forge,

tja, dass der Compiler keine Sonderzeichen versteht hab ich inzw. auch schon anderswo gelesen. Das ist ziemlicher Mist!:motz:

Dein Tipp mit den franz. Anf.zeichen funktioniert leider auch nicht, da es dann nur als normaler String gewertet wird.

Ich bin nun um das Problem herum geschifft, indem ich einfach die funktionierenden *.scpt Dateien (Skripteditor) in mein ASS Projekt übernommen habe.
Jetzt werden die benutzten Sonderzeichen wieder richtig erkannt und die Sache läuft.
Dabei habe ich allerdings noch ein weiteres Problem, dass den Aufruf von anderen Skriptdateien betrifft. Ich mach dafür gleich mal nen neuen Post.

Trotzdem danke.
Bye.
C.Wiggum
 
Moment...

Das funktioniert problemlos und nutze ich schon immer.
Wie ist Deine Datei codiert?

Siehe angehängtes Bild.

Viele Grüße
 

Anhänge

  • Bild 1.jpg
    Bild 1.jpg
    16,4 KB · Aufrufe: 69
Hey l_p,

meine Datei ist genauso codiert. UTF-8 !

Wichtig ist für mich, aber auch, dass ich eine UTF8 codierte Datei erzeugen kann.
 
Du glaubst es nicht.....

MEIN PROBLEM IST GELÖST !!! :freu:

Little_Pixel, ich wollte dir eigentlich gerade mein Projekt zusenden (s. Thread: "ASS Projekt: relativer Pfad von .scpt Datei zu .scpt Datei") und im Zuge dessen wollte ich eine abgespeckte Version davon machen.
Und als ich da so die Dateien wieder hin und her schaufele, gab es ein Problem beim Hinzufügen einer *.applescript Datei. Das war genau die, die diese Sonderzeichen enthielt.
Und siehe da: Die Sonderzeichen wurden diesmal nicht nur intern vom Compiler falsch interpretiert sondern diesmal auch falsch im Editor angezeigt (eben ein "unknown token").

Als ich diese Zeichen dann manuell geändert hatte, war alles wieder gut !!!
Denn, und jetzt kommt's:

Die Datei (ich meine die Textdatei in der der Code steht) darf eben nicht in UTF-8 codiert sein. Denn der UTF-8 Zeichensatz kennt in der Tat keine Zeichen wie «,»,≤ oder ≥.
Also habe ich die Datei in "Western (Mac OS Roman)" umkonvertiert und alle Zeichen werden erkannt und der Compiler kennt sie plötzlich auch !!!
Und das beste ist: Mein Skript funktioniert sogar :D

Und das geht so:
Rechtsklick in die Datei > Get Info > Tab: General > File Encoding auswählen

Little_pixel, dein Hinweis mit der Codierung und dem passenden Bildchen waren letztendlich Gold wert. Denn vorher wusste ich gar nicht, dass man die Codierung ändern konnte.

Danke an alle.
Bye,
Wiggum
 

Anhänge

  • Picture 1.png
    Picture 1.png
    17,3 KB · Aufrufe: 66
... und jetzt die Ironie dazu:

In meinem alten Tune•Instructor Projekt (1.x) habe ich einen mega fetten Eintrag zu der Problematik.
"MERKEN!!! ....."

Aber seit dem ich nur noch unter Leopard entwickle ist mir das gar nicht mehr bewusst gewesen.

Viele Grüße
 
Zurück
Oben Unten