21.3 Variablen 

21.3.1 Variablen definieren 

Die Aufgabe von Variablen besteht darin, Werte zu speichern. Wenn Sie ein Skript schreiben möchten, das eine vorgegebene Datei an einen anderen Ort kopiert, können Sie den Pfad der Datei im Skript fest vorgeben. Dies hat jedoch den Nachteil, dass Ihr Skript nur mit dieser einen Datei funktioniert und Sie, wenn das Skript eine andere Datei bearbeiten soll, jedes Mal den Quellcode ändern müssen. Es ist effizienter, die zu kopierende Datei vom Anwender zu erfragen und ihren Namen in einer Variablen zu speichern, deren Wert bei jeder Ausführung des Skriptes anders sein kann. So muss es nicht für jede Datei umgeschrieben werden. Zur Definition einer Variablen dient der Befehl set. Ein sehr einfaches Beispiel ist das folgendes Skript:
set test to "Hallo Du da!" say test display dialog test
| Syntax Highlighting | Wenn Sie dieses Skript ausführen, wird das Wort test vom Skripteditor grün eingefärbt, im Gegensatz zu den blauen Objekten wie say und display dialog. Ebenfalls blau, aber noch dazu fett, werden die Wörter set und to gekennzeichnet. Diese Auszeichnung bedeutet, dass sie zum regulären Befehlsschatz gehören. Es handelt sich dabei nicht um Objekte. |
Keine Variablen in Anführungszeichen | Das Ergebnis dieses kleinen Skriptes besteht darin, dass Ihnen einmal »Hallo Du da!« in englischer Aussprache vorgelesen wird und dann ein gleich lautender Dialog auf dem Screen angezeigt wird. Würden Sie im Code die Textphrase in den Anführungszeichen ändern, so würde sowohl die Sprachausgabe als auch der Dialog entsprechend anders lauten. Noch anders verhielte es sich, wenn Sie say test in say "test" umwandeln würden. Die Anführungszeichen bewirken, dass das Wort test nicht mehr als Variable, sondern wie im ersten Beispiel als Wert – eben als Textphrase – betrachtet wird. Demzufolge wird das Wort «test« gesprochen. Variablen müssen immer ohne Anführungszeichen angegeben werden.
| Reservierte Wörter | Ein weiterer Punkt, der oft zu Fehlern führt, ist die Verwendung reservierter Wörter. Als reservierte Wörter werden diejenigen betrachtet, die von AppleScript verwendet werden. Es ist nicht möglich, eine Variable mit der Bezeichnung set zu definieren, indem Sie die erste Zeile in set set to "Hallo Du da!" abändern. Sie erhalten dann vom Skripteditor eine Fehlermeldung und er verweigert die weitere Ausführung des Skriptes. |
21.3.2 Werte auslesen 

In unseren Beispielen wurden die Werte der Variablen fest innerhalb des Skriptes definiert. Eine erste und einfache Möglichkeit, vom Anwender eine Vorgabe zu erhalten, bietet sich mit
display dialog
Es ist aber auch möglich, dem Objekt, das den Dialog repräsentiert, Eigenschaften zuzuweisen, die über ihre Beschriftung hinausgehen. Nehmen Sie an, Sie möchten einen Benutzernamen erfragen, um automatisch eine Sicherheitskopie dessen persönlichen Verzeichnisses zu erstellen. Der Teil des Skripts für Anzeige und Aktivierung des Dialogfelds könnte so lauten:
set Ergebnis to display dialog "Welcher Name?" buttons {"Kai", "Thorsten"} set Vorname to button returned of Ergebnis
Abbildung 21.9 Die Verwendung reservierter Wörter führt zu einer Fehlermeldung, denn AppleScript kann ihre Verwendung nicht auseinanderhalten.
Abbildung 21.10 Über einen Dialog kann vom Anwender ein Wert übergeben werden.
Um einer Variablen einen Wert zuzuweisen sind in der Tat zwei Zeilen Skripttext notwendig:
Wert speichern, … | Die erste Zeile hat die Aufgabe, den Dialog aufzurufen: Mit buttons werden die Standard-Schaltflächen eines Dialogs geändert. In den geschweiften Klammern werden, durch Kommata getrennt, die Beschriftungen der Schaltflächen vorgegeben. Sie können auch weitere Schaltflächen definieren, indem Sie diese ebenfalls in Anführungsstrichen und durch ein Komma vom vorhergehenden Eintrag getrennt einsetzen. Anders als in den ersten beiden Beispielen, verbleibt das Ergebnis hier nicht im Skripteditor, sondern wird in der Variablen Ergebnis gespeichert. Diese enthält dann nicht den Text selbst, sondern nur das Rückgabe-Objekt des Dialogs. Wenn Sie sich das Event-Protokoll anschauen, werden Sie dort einen Eintrag {button returned:"Thorsten"} finden.
Abbildung 21.11 Das Ergebnis der Auswahl wird in einem Objekt button returned gespeichert.
… auslesen und zuweisen | Im zweiten Schritt wird aus dem Objekt der vom Dialog zurückgegebene Wert ausgelesen. Es wird auf das neu entstandene Objekt zurückgegriffen und mit button returned der Wert ausgelesen und der Variablen Vorname zugewiesen. Eine Variable mit der Bezeichnung Name ist nicht möglich, da es sich dabei um ein reserviertes Wort handelt. Jetzt wäre es möglich, ausgehend von dieser Variablen zum Beispiel das persönliche Verzeichnis des Benutzers zu kopieren.
| Anweisungsblöcke übergeben |
Möchten Sie mehrere Anweisungen an ein Programm richten, ist es regelrecht lästig, jedes Mal mit tell die Applikation direkt anzusprechen. Für solche Zwecke ist es möglich, Anweisungen in einem Block zusammenzufassen. Ein solcher wird mit tell und dem Namen des Programms eingeleitet, anschließend folgt aber kein Befehl, sondern ein Zeilenumbruch. Dann schließen sich die auszuführenden Befehle an, die sich an das angegebene Programm richten. Beendet wird der Block mit der Zeile end tell. Folgende Anweisungen können zum Beispiel dem Finder gebündelt übergeben werden:
tell application "Finder" activate open home empty trash end tell tell application "Finder" activate open home end tell empty trash |







Jetzt bestellen


