Navigation: Befehlsübersicht >

Aufruf

Diese Seite drucken
Vorherige Seite Nächste Seite
Zurück zur Kapitelübersicht

Hiermit wird ein Unterprogramm aufgerufen, welches mit der entsprechenden Marke beginnt und mit Zurück endet. Nach Abarbeitung dieses Unterprogramms wird mit dem nächsten Befehl fortgefahren.

 

Sollte die Option Nur Sprung aktiviert sein, wird die Abarbeitung des Skripts einfach nur verzweigt und an der gegebenen Marke fortgeführt - eine Rückkehr findet nicht statt.

 

Wahlweise kann eine Bedingung angegeben werden, von der der Aufruf bzw. Sprung abhängig gemacht wird.

 

Wird die Option Im Hintergrund gewählt, läuft das Programm zunächst ohne Aufruf des Unterprogramms weiter. Ist ein Intervall angegeben und ist dieses verstrichen, wird das Unterprogramm dann (im Hintergrund) aufgerufen.

Hinweis: Das Unterprogramm wird nicht im Hintergrund bzw. parallel zum Programmfluss ausgeführt, sondern nur unabhängig vom Hauptprogramm aufgerufen. Während der Ausführung wird das Hauptprogramm unterbrochen, daher sollten keine länger dauernde Vorgänge darin stattfinden. Um eine echte Hintergrundverarbeitung zu erreichen, kann dies über die asynchrone Programmierung (s.u.) erfolgen.

 

Ist in der Eigenschaft max. Ausführungen eine Zahl eingegeben, wird dies entsprechend oft wiederholt, andernfalls wiederholt sicher der Aufruf ständig.
In Intervall wird der Takt (standardmäßig in Sekunden) eingestellt, in dem die Aufrufe erfolgen sollen (min. 0,1 Sekunden). Wird hier 0 oder kein Wert angegeben, wird dieser zyklische Aufruf gestoppt.

Die Dauer kann auch anders angegeben werden: X=Sekunden, Xms=Millisekunden, Xm=Minuten, Xh=Stunden, h:mm:ss=Zeitangabe, -h:mm:ss=Zielzeit

Über die Option auch sofort ausführen wird eingestellt, dass der Aufruf auch sofort erfolgt und nicht erst nach der Dauer in Intervall (wird nicht mitgezählt).

 

Wird bei einem solchen Befehl keine Marke angegeben, werden alle zuvor gestarteten zyklischen Aufrufe abgebrochen.

 

Die Option Ignorieren, wenn Marke fehlt verhindert die Prüfung des Skripts bzw. die Fehlermeldung, wenn die aufgerufene Marke nicht existiert. Hierdurch können beispielsweise in externe Skripte Aufrufe von Ereignismarken eingebaut werden, die nur dann ausgeführt bzw. berücksichtigt werden, wenn sie im Hauptskript auch eingesetzt wurden.

 

Die Bedingung bewirkt (wie bei vielen anderen Befehlen auch), dass bei nicht erfüllter Bedingung der Befehl komplett übersprungen wird, also auch keine zyklische Ausführung initiiert.

Bei diesem Befehl gibt es jedoch eine Besonderheit, wenn "Im Hintergrund" gewählt ist: Ist der Schalter "Nur Aufruf, wenn" aktiviert, wird der Befehl selbst zwar immer ausgeführt und somit die zyklischen Aufrufe initiiert, jedoch findet der jeweilige Aufruf pro Takt nur statt, wenn die Bedingung erfüllt ist. Auf diese Weise können Bedingungen laufend überwacht und entsprechend darauf reagiert werden.

 

Beispiel:

*** Aufruf erst, wenn Bedingung erfüllt

*** Beeps, wenn Maus am oberen Rand ist

Status 'Ich warte...'

Aufruf Marke 'Ping' im Hintergrund, Intervall 1, Aufruf bedingt (? '[cX.Bildschirm.MausY]<10')

Warte Endlos (Warten auf zu behandelnde Ereignisse)

 

:: Ping

Sound Systemsound 'Beep'

Beende Unterprogramm (Zurück)

**cx5AR-LC AAAAAAABAC VUsFOwzAMv SPxD1YOnFD HznSTtmmHI Q0hOjEQ4hA ad41InCpxG Ps3bvwYabd puxUuid-L_ eTnOC9Krxs eX14A5LNoO HocK8wHx3j _4KyVpEKHT hgO92rX4Ei 0AIkFrPCLR 2ISKx8rQB_ 4GrZIBFNUm jaRNomsfr6 NSbmD_0hOE ZtwEFvKGEB acO_okeCxr dWhV7Go3bZ gyTEcRRdlD VvpGbMs66u -i7YR0J5L6 T_upU3cQ_I kYK25XmmLf iSGZ2hBjP5 Tmo6dhMI56 sKZI6VZO9r rnjNP0sREv ZbP2VQbFcp ae5u1dl_er gzfDm_6ulx L3TuHuW149 xe7rVEB51Z 7BuwiqXlVY Zl6aD-sc9f TDKljSlq80 67lg8N2_gL e78PDpgIAA A===*

Soll der Aufruf des Unterprogramms nur einmal erfolgen, kann zusätzlich eine 1 in max. Ausführungen gesetzt werden.

 

 

Optional können dem Unterprogramm ein oder mehrere Parameter übergeben werden, welche dort in Klammern definiert sein müssen. Existiert etwa im Skript folgende Marke:

::  RechneSumme(Wert1;Wert2)

können beim Aufruf der Marke zwei Werte übergeben werden, getrennt mit Semikolon. Sollten die Parameter selbst ein ; enthalten, muss der ganze Parameter mit " umgeben werden.

Das Unterprogramm hat dann diese Werte in den Variablen mit den in Klammern angegebenen Namen zur Verfügung (siehe auch: eigene Funktionen). Sollten diese Variablen bereits im Hauptprogramm existieren, werden sie nach Ende des Unterprogramms wiederhergestellt (unerheblich, wenn in der Marke "eigene Variablen" aktiviert ist).

Das Ergebnis dieser Funktion wird dann in die hier angegebene Variable eingetragen.

 

Ist die Option Objekt-Ereignis aktiviert (sinnvoll aus einem Objekt), wird der angegebene Sprungmarkenname als Ereignisname aufgerufen, also die Sprungmarke

::Objektname(Objekt-ID)_Ereignisname

im das Objekt verwendenden Skript aufgerufen, wobei dies dann auch im Sprungmarken-Dialog angeboten wird.

Dies kann auch bei asynchron gestarteten Hintergrundfunktionen eingesetzt werden (s.u.).

 

 

Asynchroner Aufruf

Optional kann der Aufruf eines Unterprogramms auch asynchron (in einem eigenen Task bzw. Thread, also ggf. auf einem anderen Prozessor) erfolgen, wobei das aufrufende Skript weiterläuft. Hierfür muss eine Sprungmarke in der Eigenschaft Sprungmarke für "Fertig" eingetragen werden, welche aufgerufen wird, wenn das Unterprogramm beendet ist. Auf diese Weise können länger dauernde Berechnungen o.ä. so ausgeführt werden, dass das laufende Programm nicht blockiert wird.

Sollte als Sprungmarke lediglich ein Minus ("-") angegeben sein, wird nach Abschluss des asynchronen Unterprogramm kein Ereignis ausgelöst. Dies entspricht dem Aufruf-Typ "Asynchroner Aufruf", bei dem keine Marke angegeben werden muss.

 

Das Unterprogramm läuft in einem eigenen Umfeld und hat daher keinen direkten Zugriff auf globale Variablen (nur über cX.Muttervariablen()/.Hauptvariablen()). Es können aber Parameter an das Unterprogramm übergeben werden. Ein ggf. von dem Unterprogramm im Zurück-Befehl übergebener Ergebniswert wird in der beim Aufruf angegebenen Variablen eingetragen.

Außerdem kann in der angegebenen Sprungmarke ein Parameter angegeben werden, in dem dann der Startwert enthalten ist, etwa als ::ProzessFertig(Kennung), wodurch das Ergebnis in [Kennung] bereitsteht.

Auch kann das asynchrone Unterprogramm auf Anzeige-Elemente zugreifen, etwa um einen Fortschritt anzuzeigen.

Wird der gleiche Aufruf mit der Option Prozess abbrechen ausgeführt, wird der im Hintergrund laufende Vorgang abgebrochen (ein weiterer Aufruf erfolgt nicht). Sollten mehrere dieser Prozesse laufen, wird der zuletzt gestartete beendet.

Aus solchen Hintergrundfunktionen kann auch ein Aufruf mit der Option Objekt-Ereignis verwendet werden, um ein optionales Unterprogramm im aufrufenden Hauptskript aufzurufen.

Hinweis: Asynchrone Aufrufe sollten mit Bedacht verwendet werden, da diese Abläufe leicht zu unerwartetem Verhalten führen können.

 

 

Im folgenden Beispielskript für den Aufruf-Befehl wurde ein Unterprogramm "Fenster_anzeigen" angelegt, welches den Befehl zum Anzeigen eines Fensters beinhaltet. Dieses Unterprogramm wird durch den Aufruf in der ersten Zeile des Skripts aufgerufen und ausgeführt:

 

Aufruf Marke 'Fenster_anzeigen'

 

Warte Endlos (Warten auf zu behandelnde Ereignisse)

 

:: Fenster_anzeigen

Anzeigefenster  'Hauptfenster' (ID='Haupt_Fenster', zentriert, Aktivieren)

Beende Unterprogramm (Zurück)

 

Wenn Sie dieses Beispielskript starten, erscheint ein leeres Fenster mit der angegebenen Überschrift auf dem Bildschirm.

 


 

Bedingungen

Zurück

::Marke

[Timer(ID).X]-Platzhalter

 


cX-Webseite: http://www.clickexe.net