Um zu testen, ob eine Eingabe eine Ganzzahl ist, habe ich jahrelang die klassische Umwandlung angewendet: Von einem 'try wrapper' umgeben, ist diese Form recht zuverlässig. Aber nicht zu einhundert Prozent, weil zum Beispiel "-7" keinen Fehler generiert.
Aus diesem Grunde ist es besser, eine kleine Wiederholungs-Schleife einzubauen, in welcher festgestellt wird, ob sich jedes einzelne Zeichen in der Textkette "0123456789" befindet. Dies sieht kompliziert aus, ist aber viel schneller als die Umwandlung mit 'as integer'.
Der "flag" 'okay' wird zu Beginn auf '1' gesetzt. Ist eines der Zeichen nicht zulässig, wird 'okay' auf '0' gesetzt und mit 'exit repeat' die kleine Schleife verlassen. Im darauffolgenden Test wird der Wert von 'okay' geprüft. Ist er '1', dann wird mit 'exit repeat die grosse Schleife verlassen. Ist er '0', dann wird der Dialog gezeigt, welcher dem Anwender die Wahl lässt zwischen neuem Versuch oder Abbruch.
Der Test 'if nPages is not "" then' fängt leere Eingaben ab.
Die grosse Repeat-Schleife hat keine Abbruch-Bedingung. Aber die "Abbruch"-Buttons in jedem Dialog und die beiden 'exit repeat' ermöglichen, den Ausstieg problemlos. --- set nPages to 5 repeat set okay to 1 set nPages to text returned of (display dialog "Wieviele Seiten einfügen?" default answer nPages) if nPages is not "" then repeat with i from 1 to count of nPages if character i of nPages is not in "0123456789" then set okay to 0 exit repeat end if end repeat if okay = 1 then set nPages to nPages as integer if nPages < 2000 then if nPages is not 0 then exit repeat else display dialog "Spassvogel." end if else display dialog "Ein XPress-Dokument kann nicht mehr als 2000 Seiten enthalten. Deine Eingabe: " & nPages buttons {"Abbruch", "Neuer Versuch"} default button 2 with icon 0 end if else display dialog "Nur Ganzzahlen.
Deine Eingabe: " & nPages buttons {"Abbruch", "Neuer Versuch"} default button 2 with icon 2 end if else display dialog "Die Eingabe ist leer." & nPages buttons ¬ {"Abbruch", "Neuer Versuch"} default button 2 with icon 0 end if end repeat --- Erst wenn die Eingabe nur Ziffern enthält, wird die Textkette mit 'as integer' in eine Ganzzahl verwandelt. Darauf folgt die Prüfung, ob der Wert höher als 1999 ist. Wenn dieser Code am Anfang eines Scripts steht, welches ein Dokument erzeugt, dann reicht dies. Sonst müssen zuerst die vorhandenen Seiten gezählt und mit berücksichtigt werden.