Programmfluss



Bedingungen If-Then


Syntax

if Boolean [ then ]
[ Anweisung ]
[ ... ]
[ else if Boolean [then] ]
[Anweisung]
[ ...]]
[ else ]
[ Anweisung ]
[ ... ]
end [ if ]

Eine If-Kontrollanweisung kann eine If-Anweisung, beliebig viele Else-If-Anweisungen und eine Else-Anweisung enthalten. Ganz generell koennen fuer die Ausdruecke, die von der if-Kontrollanweisung bewertet werden sollen, alle Ausdruecke angegeben werden, die entwerder mit "true" oder "false" bewertet werden koennen.


Beispiel:

property x : 3

if x > 0 then
   set theText to ("Die Zahl ist positiv")
else if x < 0 then
   set theText to ("Die Zahl ist negativ")
else if x = 0 then
   set theText to ("Die Zahl ist null")
end if


Schleifen Repeat



Befeh lErlaeuterungSyntaxBeispiel
Repeat "Repeat" fuehrt bestimmte Anweisungen unendlich oft aus. Die Repeat-Kontrollanweisung fuehrt die eingebetteten Anweisungen unendlich oft aus. Damit es nicht zu dramatisch wird, kann man das mit einem "exit" beenden. repeat
[ Anweisung ]
[ ... ]
end [ repeat ]
property x : 3

repeat
   set x to x + 10
   if x > 100 then exit repeat
end repeat
get x --result: 103
repeat Anzahl Repeat Times fuehrt bestimmte Anweisungen anzahl mal aus. repeat Anzahl [ times ]
[ Anweisung ]
[ ... ]
end [ repeat]
repeat 10 times
   beep
end repeat
Repeat While fuehrt bestimmte Anweisungen solange aus, solange eine Bedingung erfuellt ist. repeat while Boolean
[ Anweisung ]
[ ... ]
end [ repeat ]
property x : 0

repeat while (x < 10)
   beep
   set x to x + 1
end repeat
Repeat until "Repeat until" fuehrt bestimmte Anweisungen so oft aus, bis eine bestimmte Bedingung erfuellt ist. repeat until Boolean
[ Anweisung ]
[ ... ]
end [ repeat ]
property x : 11

repeat until (x < 10)
   beep
set x to x - 1
end repeat
Repeat With fuehrt bestimmte Anweisungen so viele Male aus, wie man will, wobei eine Laufvariable den Wert des Zaehlers enthaelt. repeat with Laufvariable from Startwert to Endwert [ by Schrittwert ]
[ Anweisung ]
[ ... ]
end [ repeat ]
set x to 0
repeat with n from 1 to 10 by 2
   set x to x + n
end repeat
get x
Repeat With in Repeat with in fuehrt bestimmte Anweisungen fuer jedes Element einer Liste aus. Die Laufvariable erhaelt dabei immer einen Verweis auf den jeweiligen Gegenstand. Nach dem letzten Durchlauf verweist die Variable auf den letzten Gegenstand. Der Gegenstand des Verweises wird wieder mit "contents" ausgelesen. repeat with Laufvariable in Liste
[ Anweisung ]
[ ... ]
end [ repeat ]
set g to ""
repeat with i in {"Ellen", "Lisa", "Carrie"}
   set g to g & ("Hallo" & i & return)
end repeat
--"HalloEllen
--HalloLisa
--HalloCarrie
--"

Try Fehlerauffang


"Try" faengt Fehler im Skriptablauf auf.

Syntax

try
[ Anweisung]
[ ... ]
on error [ FehlermeldungsVariable ] ¬
[ number FehlernummerVariable] ¬
[ from FehlerReferenzVariable] ¬
[ partial result TeilergebnisVariable] ¬
[ to ErwarteterWertVariable ]
[ global Variable] [ ... ]
[ local Variable ] [ ... ]
[ Anweisung ]
[ ... ]
end [ error | try ]

Beispiel:

tell application "FileMaker Pro"
   try
     set theCell to get cell 2 of field 3
     display dialog theCell
   on error
     set c to "Fehler!"
   end try
end tell


Die Fehlermeldungsvariable enthaelt die ganze Fehlermeldung, so wie sie in einem Fehlerdialog angezeigt worden waere. Die Fehlernummervariable enthaelt eine Nummer, nach welcher man den Fehler eindeutig identifizieren kann. Die Fehlerreferenzvariable verweist auf die Applikation oder das Objekt, von wo der Fehler ausging. Die Teilergebnisvariable enthaelt eine Liste mit den Ergebnissen, die von den bisher in der Try-Kontrollanweisung ausgefuehrten Anweisungen geliefert wurden. Die Erwarteter WertVariable enthaelt die Werteklasse, welche fuer das Ergebnis der fehlererzeugenden Anweisung erwartet wurde.


Error


"Error" erzeugt einen Fehler.

Syntax

error [ Fehlermeldung ] ¬
[ number Fehlernummer ] ¬
[ from FehlerReferenz] ¬
[ partial result Teilergebnis ] ¬
[ to ErwarteterWert ]

So kann man selbstdefinierte Fehler rauswerfen, damit eine umgebende try-Kontrollanweisung sie auffangen kann, wenn man das will. Man errinnere sich an try-catch in Java mit eigens definierten Exceptions.


Beispiel:

try
   tell application "FileMaker Pro" to ¬
     get cell 1 of field 1
  end tell
on error theMessage number theNumber
   if theNumber = -1728 then
   display dialog "Die Zelle wurde nicht gefunden"
   else
     set theMessage to "Unbekannter Fehler:" & ¬
       return & theMessage
     error theMessage number theNumber
   end if
end try



AppleScript Atrribute Considering/Ignoring


Hiermit werden bestimmte Attribute der AppleScript Sprache beachtet bzw. ignoriert.

Syntax

considering Attribut [, Attribute ... and Attribut ¬ ]
[ but ignoring ¬
Attribut [, Attribut ... and Attribut ] ]
Anweisung
[ Anweisungen ]
end considering

ignoring Attribut [, Attribut ... and Attribut ¬ ]
[ but considering ¬
Attribut [, Attribut ... and Attribut ] ]
Anweisung
[ Anweisungen ]
end ignoring

Es gibt verschiedene Attribute, wie zum Beispiel

Case


Normalerweise achtet AppleScript nicht auf Gross- und Kleinschreibung. Dies ist jedoch nur eine Standarteinstellung, die man mit obigen Kontrollanweisungen gezielt veraendern kann. Diese Anweisungen beziehen sich natuerlich auf die Inhalte und nicht auf den Skripttext.


Beispiel:

considering case
   "Hallo Welt!" = "hallo welt!"
end considering
--result: false

Neben der Gross- und Kleinschreibung gibt es natuerlich noch einige andere Attribute.

Diacriticals


Bei den Diacriticals handelt es sich um die Akzente `,^, ¨,~. Standartmaessig werden diese Akzente beruecksichtigt.


Expansion


Erweiterungen sind: æ, Æ. Standartmaessig werden Erweiterungen beruecksichtigt.

Hyphens


Standartmaessig werden Bindestriche beruecksichtigt.

Punctuation


Die Interpunktion umfasst folgende Satzzeichen: .,?!\"'
Diese werden standartmaessig beruecksichtigt.

White Space


Standartmaessig werden Leerzeichen beruecksichtigt

Application Responses


Dieses Attribut faellt in eine ganz andere Kategorie. Normalerweise wartet Applescript auf eine Antwort, wenn ein Befehl an eine Applikation geschickt wird. Dies kann mit diesem Attribut unterdrueckt werden. Standartmaessig wird auf die Antwort einer Applikation gewartet.

With Timeout


"With Timeout" bestimmt, wie lange auf die Antwort eines Befehls gewartet werden soll.

Syntax

with timeout [ of ] Integerzahl second [ s ]
Anweisung
[ Anweisungen ]
end timeout

With Transaction


Hiermit startet eine Transaktion fuer die eingebetteten Anweisungen.

Syntax

with transaction [ Transaktion ]
Anweisung
[ Anweisungen ]
end transaction

Die Anweisungen im Transaktionsblock werden als eine Anweisung ausgefuehrt, damit
waehrend des Ablaufs von dritter Seite Einfluss (durch Datenveraenderung) vermieden
wird.

Noch ein kleines Beispiel zu timeout:

try
   with timeout of 1 second
     tell application "FileMaker Pro"
       set theCell to cell 1 of field 1
     end tell
     end timeout
on error number n
   if n = -1712 then
     display dialog "FileMaker Pro hat zu lange " & ¬
     "gebraucht, um zu antworten. Die Zelle kann " & ¬
     "daher nicht ausgelesen werden."
     set theCell to "Fehler!"
   end if
end try