hilfdirselbst.ch
Facebook Twitter gamper-media
Mac OS X enthält verschiedene integrierte Werkzeuge und Technologien, mit denen sich gängige Aufgaben schnell und einfach automatisieren lassen.
Hans Haesler  M  p
Beiträge: 5432
27. Mai 2003, 11:14
Beitrag #1 von 1
Bewertung:
(436 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Ganzzahl-Test


Um zu testen, ob eine Eingabe eine Ganzzahl ist, habe ich jahrelang die klassische Umwandlung angewendet:
Code
set nPages to nPages as integer

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 &not;
      {"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.

Hans Haesler, hsa@ringier.ch Top
 
X