Mittwoch, 5. Oktober 2011

[Tutorial] Neue Funktionen: Array, For-Schleife usw. erklärt

Seit kurzem gibt es die neue v1.1.1 von Tasker. Diese neue Version bringt eine Reihe von sehr nützlichen Neuerungen mit die ich nun kurz Vorstellen und da wo es nötig ist, auch erklären möchte.

Fangen wir mit einem Überblick über die wesentlichsten Neuerungen an:

  • lokale & globale Variablen
  • Else Befehl
  • Arrays
  • For Schleifen
  • %MTRACK Variable - beinhaltet aktuellen Titel
  • GoTo Sprungfunktion
  • Cell Near: Merkt sich die letzten Zellen
Auf einige Neuerungen möchte ich nun noch genauer eingehen, da nicht jeder sofort was damit anzufangen wissen wird.

lokale & globale Variablen:
In vielen Programmiersprachen unterscheidet man schon zwischen lokalen und globalen Variablen, nun ist auch Tasker dazu in der Lage. Was aber ist der Unterschied? Lokale Variablen sind nur in dem jeweiligen Task bekannt, das heißt wenn nun die lokale Variable %test in Task1 verändert wird, hat dies keinerlei Auswirkungen auf die lokale Variable %test in Task2, da nur der eigene Task diese Variable kennt. Die Variable %test existiert also mehrmals.

Im Gegensatz dazu wirkt sich eine Veränderung der globalen Variable %Test in Task1 sehr wohl auf diese Variable in Task2 aus. Dies liegt daran dass diese Variable nur ein einziges mal existiert und alle Tasks auf diese eine Variable zugreifen.

Wer aufmerksam gelesen hat, hat auch schon mitbekommen wie man Tasker nun verklickert um was für einen Variablentyp es sich handelt. Lokale Variablen dürfen nur kleine Buchstaben besitzen, sobald ein großer Buchstabe vor kommt handelt es sich um eine globale Variable.

Else Befehl:
Der Else Befehl stellt eine Erweiterung zum schon vorhandenen IF Befehl dar. Hier ein Beispiel welches die Funktion veranschaulichen soll:

  1. If %test ~ 1
  2. Popup: "Test ist 1"
  3. Else
  4. Popup: "Test ist nicht 1"
  5. IfEnd
  6. Popup: "Ende"
Der Else-Zweig wird also genau dann erfüllt wenn die If Bedingung nicht zutrifft. Bis jetzt war dies zwar auch über If %test !~ 1 realisierbar, aber der Else Befehl ist da doch die galantere Möglichkeit.

Arrays:
Ein Array ist eine Art Liste. Das heißt in einem Array befinden sich im Gegensatz zu einer Variablen, mehrere Werte. Veranschaulicht schaut dies so aus:
  • %variable = 1
  • %array = 1, 5, 7, 9, 3
Um nun auf die einzelnen Elemente eines Array zugreifen zu können, nutzt man deren Index. Zum Beispiel:
  • %array2 ~ 5
  • %array3 ~ 7
Diese Indexfunktion ist schon eine Weile in Tasker integriert. Jeder der schon einmal Variable Split verwendet hat kennt dies. Die zu teilende Variable %teile wird in %teile1, %teile2 usw. geteilt. Mit den neuen Array Funktionen kann man nun jedoch flexibler auf die einzelnen Teile zugreifen. So ist es nun auch möglich auf mehrere Elemte eines Arrays zuzugreifen:
  • %array(2:4) ~ 5, 7, 9
Man greift so also auf alle Elemente zwischen dem zweiten und vierten Element zu.

Weiterhin gibt es die neuen Aktionen "Array Push" und "Array Pop". Mit "Array Push lassen sich Elemente an eine bestimmte Stelle in das Array einfügen, damit kein Element gelöscht wird, rutschten alle nachfolgenden Elemente automatisch eine Position weiter. Ein Beispiel würde folgendermaßen ausschauen:
  1. Variable -> Array Push
    • Name: %array
    • Position: 2
    • Value: 0
Nach dieser Aktion beinhaltet unser %array = 1, 0, 5, 7, 9, 3 ein Element mehr, nämlich die 0 an zweiter Stelle. Nun lassen sich bei Position und Value nicht nur absolute Werte eintragen sondern auch Variablen. Dadurch wird ein flexibles arbeiten mit den Arrays ermöglicht.

Die Aktion "Array Pop" löscht ein angegebenes Element, um die entstehende Lücke auszufüllen rutschen alle nachfolgenden Elemente eine Position nach vorn. Das gelöschte Element kann außerdem in einer Variablen abgespeichert werden. Somit ist es nun möglich jedes Element eines Arrays zu bearbeiten, auch wenn man die Elemente-Anzahl nicht kennt. Man popt einfach so oft das erste Element in eine Hilfsvariable und verarbeitet den Wert, bis das Array leer ist.

Die letzte neue Aktion ist "Array Clear", diese löscht alle Elemente eines Arrays.

For Schleifen:
Schleifen sind Befehle die so lange ausgeführt werden bis eine bestimmte Abbruchbedingung eintritt. Ein Beispiel ist das eben schon genannte einzelne verarbeiten der Array Elemente bis keines mehr da ist.
In Tasker gibt man in der For Aktion einfach die Werte an für die die nachfolgenden Aktionen ausgeführt werden sollen. Also zum Beispiel:
  1. Task -> For
    • Variable: %forvar
    • Items: 45, %variable, %array(4:7)
  2. Alert -> Popup: "aktuelles Element: %forvar"
  3. Task -> End For
  4. Alert -> Popup: "Ende"
Was geschieht nun? Es werden nacheinander folgende Popups ausgegeben:
  1. aktuelles Element: 45
  2. aktuelles Element: 1
  3. aktuelles Element: 7
  4. aktuelles Element: 9
  5. aktuelles Element: 3
  6. Ende
Was hat Tasker gemacht? Tasker ist die Aktion zwischen For und End For für jedes angegebene Item durchgegangen. Vor jedem Durchgang wird das aktuelle Item (Element) in die Variable %forvar eingetragen. Als Item kann man einzelne Werte, Variablen oder Arrays wählen.

GoTo Sprungfunktion:
Die GoTo Funktion an sich gibt es schon eine Weile, bisher konnte man allerdings nur zu einer bestimmte Aktion springen. Mit der neuen GoTo Aktion kann man verschiedene Sprungziele auswählen:
  • Action Number
    • Wie bisher die jeweilige Aktion die hinter der Nummer steckt
  • Action Label
    • In einigen Aktionen lassen sich neuerdings Label angeben, zu diesen kann nun gesprungen werden
  • Top of Loop
    • Springt an den Anfang der For Schleife
  • End of Loop
    • Springt an das Ende der For Schleife
  • End of If
    • Springt an das Ende des If Zweiges, also bis zur Aktion EndIf


So das war nun meine kleine Einführung in die neuen Tasker Funktionen. Diese bieten, wie ich finde, eine Menge neue Möglichkeiten, die ihr sicher au bald in neuen Profilen von mir sehen könnt :)

19 Kommentare:

  1. Großartige Erklärung... wieder einmal..

    Danke.

    AntwortenLöschen
  2. hi,
    toller blog :)
    habe keine "Globale Kommentarfunktion" gefunden, daher leider hier :)

    Gibt es die Möglichkeit (Exchange)E-mailkonten über tasker einzurichten?

    Danke im Voraus!

    Gruß
    GerhardSchr

    AntwortenLöschen
  3. Einrichten geht nicht, aber das macht man in der Regel ja eh nur ein mal...

    Abrufen geht indem man die gobale Synchronisierung anwirft, dabei sollten auch Exchange Konten abgefragt werden.

    AntwortenLöschen
  4. ich wollte mir mit tasker eine MDM für andraid erstellen (steuerbar über ftp/email/sms), um ca. 50 Geräte zu "verwalten".

    Daher muss man das Einrichten der E-Mail konten schon öfterns machen :)

    Schade das dies nicht geht...

    AntwortenLöschen
  5. Mein Tutorial!!
    So langsam taste ich mich vor, habe auch inzwischen 3 Profile nachgebaut, sodass sich allmählich der Sinn von Tasker erschließt...
    Was ich nun machen möchte, dafür habe ich keine Analogie gefunden. Ich möchte sozusagen "im Startordner" meines GT1000 den Kalender aufrufen, sodas ich als ersten aktiven Bildschirm den Kalender einsehen kann. Geht das?
    Gruß, Heinz M.

    AntwortenLöschen
  6. ähm versteh nicht ganz was du machen willst. Du willst statt dem Homescreen den Kalender öffnen?

    AntwortenLöschen
  7. Ja. Stand Heute erhalte ich nach dem Hochfahren, bzw. nach "Warmstart" den ersten Screen mit den Icons: "Wetter, Uhr, Internetbrowser und noch einigen weiteren".
    Ich würde mir wünschen, das nach der Eingabe meines Codes der Kalender öffnet.

    AntwortenLöschen
  8. Unter Events->System gibt es "Device Boot", damit kannst du Aktionen direkt nach dem Hochfahren des Gerätes ausführen, also so eine Art Autostart. Da könnte man den Kalender rein nehmen.

    AntwortenLöschen
  9. Perfekt! Das war die Lösung. Ich bin echt beeindruckt, erstens von deinem Wissen aber auch von der Funktionalität des tasker's.
    Also, wer eine Art Autostart sucht, hier ist die Lösung!

    Danke für die schnelle und effektive Unterstützung.
    Heinz

    AntwortenLöschen
  10. vielen Dank!
    ich habe auf hier in den letzten 2 Tagen mehr über den Tasker gelernt als in den 6 Monaten davor (seit ich den Tasker habe)

    Danke!!!

    AntwortenLöschen
  11. Hervorragend - extrem hilfreich! so kommt man wirklich weiter. Mann, da sind ja noch so viele Optionen in diesem Tasker;-)....
    Danke auch!!

    AntwortenLöschen
  12. "damit kannst du Aktionen direkt nach dem Hochfahren des Gerätes ausführen"
    Hallo,
    wie stelle ich ein, das es ca. 10sekunden später erst startet, weil das Handy eine gewisse vorlaufzeit braucht beim hochfahren.
    DANKE

    AntwortenLöschen
    Antworten
    1. Mit der Aktion Task->Wait ganz am Anfang deines Taks kannst du eine beliebige Zeit die restlichen Aktionen aufschieben.

      Löschen
  13. hatte bei direktem hochfahren eine bootschleife

    AntwortenLöschen
  14. Hallo,

    immer wieder taucht in den Anleitungen

    Aktion Task->Wait

    auf. Bei mir finde ich die Funktion allerdings nicht?
    Ich finde nur in den Profil - Einstellungen - eine einstellbare Abkühlzeit.

    Ist die damit gemeint?

    AntwortenLöschen
    Antworten
    1. Nein die ist nicht gemeint.
      Stell bitte deine Sprache in Tasker auf Englisch, die deutsche Übersetzung bringt ein paar Probleme mit sich. Dann solltest du auch Task-> Wait als Aktion finden.

      Löschen
  15. Gibt es eine Möglichkeit einen zufallswert aus einem Array ausgeben zu lassen oder eine zufällige Variable bei jedem Aufruf?

    AntwortenLöschen
  16. Also ich habe das Beispiel mit der for schleife und das mit den arrays leider nicht verstanden.

    AntwortenLöschen