1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Taschenrechner

Dieses Thema im Forum "AppleScript" wurde erstellt von the x-master, 07.07.06.

  1. the x-master

    the x-master Riesenboiken

    Dabei seit:
    29.01.06
    Beiträge:
    290
    Hallo liebes Forum,

    ich tüftle gerade ein bisschen mit dem Script Editor herum...
    Mein Ziel war ein ganz billiger Rechner. Also man gibt eine Aufgabe (z.b. 8+8) und er rechnet es aus & gibt das Ergebnis in einem display dialog aus.
    Eigentlich doch völlig einfach. ;) Doch als ich das ganze ausprobierte, geht es nicht. :(
    Also hier der Code:

    Code:
    set calc1 to the text returned of (display dialog "Rechne:" buttons {"OK"} default button 1 default answer "")
    display dialog calc1
    Allerdings wollte ich ja nicht nochmal das bekommen, was ich eingeben habe.
    Ich wollte ja das Ergebnis haben.
    Also habe ich es nochmal mit:

    Code:
    set calc1 to the text returned of (display dialog "Rechne:" buttons {"OK"} default button 1 default answer "")
    display dialog the result of calc1
    ...probiert.
    Geht auch nicht. :(

    Auch:

    Code:
    set calc1 to the text returned of (display dialog "Rechne:" buttons {"OK"} default button 1 default answer "")
    display dialog calc1 as number
    ...geht nicht. :(

    Jetzt habe ich aber nur mal kurz:

    Code:
    get 8+8
    geschrieben und Tada - er macht's. Mir scheint, dass die Anführungsstrichel da weg sollten. Aber wie ?
    (Warscheinlich wieder ganz einfach ;))

    Vielen Dank :-D & herzliche Grüße,

    X.
     
    #1 the x-master, 07.07.06
    Zuletzt bearbeitet: 07.07.06
  2. pete

    pete Gast

    Hallo x-master,

    was bei display dialog zurückgegeben wird, ist vom Typ "text", deswegen kann es nicht berechnet werden. Für eine Umwandlung könntest Du eine Liste erzeugen, indem Du alle Zahlen und Operatoren mit "every word of" trennst. Danach wäre es möglich, die gesamte Liste mit einer Schleife durchzugehen, Operatoren und Werte zu trennen und dann Berechnungen durchzuführen.

    Zum Glück gibt es mit "run script" einen viel einfacheren Weg:

    Code:
    set calc1 to the text returned of (display dialog "Rechne:" buttons {"OK"} default button 1 default answer "")
    display dialog (run script calc1)
     
  3. pi26

    pi26 Adams Parmäne

    Dabei seit:
    17.12.04
    Beiträge:
    1.297

    so geht es auch mit Anführungstrichel ;)

    set aufgabe to "3+(7*4)"
    set ergebnis to (run script aufgabe)
    display dialog ergebnis
    display dialog ergebnis *2

    Oder man bastelt sich eine Evaluate-Funktion auf dieser Grundlage:

    display dialog evaluate("3+(7*4)")

    on evaluate(thetext)
    return run script thetext
    end evaluate




    mfg pi26
     
    #3 pi26, 16.07.06
    Zuletzt bearbeitet: 17.07.06
  4. pete

    pete Gast

    Danke, pi26, das war natürlich x-masters Frage. :)

    Ich darf noch ergänzen, dass alle Variablen in AppleScript in Klasse "Text" umgewandelt werden, wenn man sie in Anführungszeichen setzt. Zu welcher Klasse die zurückgebenen Werte einer Funktion gehören, kann man fast immer den Funktionsbibliotheken entnehmen. Im Fall von "display dialog" lässt sich das sogar direkt am Namen des Rückgabewerts erkennen ("text returned of", "button returned of").
     
  5. pete

    pete Gast

    In den Beispielen oben wurde mit "run script" lediglich ein Text in Variablen zerlegt, was letztlich nur funktioniert, weil AppleScript die meisten Variablentypen automatisch erkennt und zuordnet.

    Der Befehl "run script" ist vor allem dazu gedacht, komplette Scripts, die direkt als Text eingegeben werden oder in einer Variablen gespeichert werden, auszuführen.

    Alternativ dazu kann man auch Scripts ausführen, die in einer Datei gespeichert sind oder als "script objects" definiert werden.

    Beispiel für Dateien:

    Die Datei läge als "xyz.scpt" auf dem Desktop, z.B. mit diesem Inhalt:

    Code:
    on doHandler1()
    	beep 1
    end doHandler1
    
    Ausführen kann man die Script-Datei in einem anderen Script so:

    Code:
    property myScript : load script file (((path to desktop) as string) & "xyz.scpt")
    
    tell myScript to doHandler1()
    
    Script-Objekte funktionieren ähnlich und werden detailliert im AppleScriptLanguageGuide ab Seite 325 beschrieben.
     
  6. the x-master

    the x-master Riesenboiken

    Dabei seit:
    29.01.06
    Beiträge:
    290
    Hallo pete, hallo pi26,

    vielen Dank für eure Antworten. Da habe ich ja wieder mehr als ich wollte gelernt, super ! :)
    Die "Skript-Ausführen" - Funktion ist ja wirklich sehr interessant.
    Trotzdem ist meine Taschenrechner - Frage doch nicht so einfach.
    Ich dachte, dass ich vielleicht ein paar Anführungstrichel vergessen & o. zuviel gesetzt habe.
    Ach ja, pi26, danke, dass du mir das nochmal in Anführungstrichel aufgeschrieben hast :).

    Herzliche Grüße,

    X.

    (Ich konnte erst jetzt antworten, da ich für drei Wochen im Urlaub an der Nordsee gewesen bin ;))
     

Diese Seite empfehlen