Navigation: Befehlsübersicht >

Externe Funktion

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

FG Mit diesem Befehl können Sie eine Funktion aufrufen, die in einer anderen Skriptdatei enthalten ist (auch "externes Makro" genannt). Angegeben werden dazu der Funktionsname und der Dateiname des Skripts, sofern das Makro nicht bereits geladen ist. Wird nur der Dateiname und kein Funktionsname angegeben, wird das Makro komplett eingebunden und steht für weitere Aufrufe zur Verfügung.

Auch kompilierte Skripte können eingebunden werden, wozu deren EXE-Dateiname angegeben werden muss.

Voraussetzung für das Verwenden oder Einbinden eines externen Skripts bzw. der entsprechenden EXE ist, dass dies dort erlaubt worden ist (siehe entsprechende Skript-Einstellung bzw. Auswahl bei der EXE-Erstellung).

 

Es ergibt sich hierdurch die Möglichkeit, häufig benötigte und ausgetestete Funktionen in ein Skript zu integrieren, ohne die Funktion selbst in das Skript integrieren zu müssen. Das eigentliche Skript wird dadurch wesentlich kleiner und übersichtlicher.

Hinweis: Ereignisse werden nicht in diese externen Makros umgeleitet und können daher dort nicht direkt ausgewertet werden.

 

Wenn Sie Makros erstellen, setzen Sie diese als Unterprogramme (::Marke, Befehle, Zurück), Funktionen oder Objekte in ein neues Skript ein. Es können beliebig viele Funktionen in einem Skript definiert werden. Die Namen dieser Unterprogramme sollten klar erkennbare Namen tragen, etwa ::Makro1_Umrechnung.

Hinweis: Sie können die Funktion(en) testen, indem Sie in dem Makro-Skript einen Probeaufruf (Aufruf-Befehl) und den Befehl Beende Skript setzen und es starten. Ansonsten ist es sinnvoll, ein Makroskript direkt mit einem Hinweis zu beenden, damit es nicht versehentlich selbst aufgerufen wird.

Hinweis: Innerhalb von Makros sollte kein Warte Endlos vorkommen (es wird dann als "Zurück" interpretiert).

 

Um ein Skript weiterzugeben, welches Makros aus einem anderen Skript verwendet, muss das Makro-Skript ebenfalls weitergeben oder in die EXE eingebunden werden. Die Makroskripte anderer Sprachen können auch als Ressourcen in die resultierende EXE-Datei eingebunden werden.

 

Einbindung von Skripten

Wird ein cX5-Skript angegeben und die Option Skript einbinden aktiviert, wird dieses Skript zur Laufzeit in das Hauptskript eingebunden, wodurch danach alle Unterprogramme, Funktionen und Objekte daraus dem Hauptskript zur Verfügung stehen. Diese werden dann auch im Editor ausgewiesen, etwa im Variablenauswahlfenster oder im Sprungmarken-Dialog. Wird dann eine EXE erstellt, werden diese Skripte ebenfalls automatisch dort eingebunden, so dass diese nicht mitgeliefert werden müssen.

Es kann auch eingestellt werden, dass das Skript nur zur Laufzeit eingebunden werden soll, nicht aber in die erstellte EXE. Hierdurch können aus der EXE weiterhin die CX5-Dateien eingebunden werden.
Hinweise:

Sollten in dem eingebundenen Skript PlugIns verwendet werden, die nicht im Hauptskript enthalten sind, wird die EXE ohne diese PlugIns erstellt, daher müssen diese extra bereitgestellt werden. Hierfür können aber im Hauptskript an unerreichbarer Stelle Befehle dieser PlugIns eingesetzt werden, damit auch diese in die EXE eingebunden werden.
Marken, deren Name mit einem Unterstrich _ beginnen, werden nicht im Hauptskript angezeigt.
Sollten identische Markennamen in mehreren einzubindenden Makros enthalten sein, erfolgt ein Laufzeitfehler. Einzubindenende Skripte sollten daher mit eindeutigen Markennamen versehen werden.
Auch Skriptressourcen des eingebundenen Skriptes werden in die Ressourcen des Hauptskripts eingebunden, sofern deren Name nicht mit _ beginnt. Sollte der Name einer dieser Ressourcen bereits im Hauptskript vergeben sein (Ausnahme: "ScriptIcon"), erfolgt eine Fehlermeldung.
Da eingebundene Skripte zur Laufzeit ans Ende des Skripts angehängt werden, getrennt durch 2 Zusatzzeilen, werden auftretende Fehler in einem eingebundenen Skript mit einer Zeilennummer angezeigt, die größer ist als die Anzahl Zeilen des Hauptskripts. Die  Fehlermeldung enthält dann aber am Ende den Dateinamen des eingebundenen Skripts sowie die Nummer der Fehlerzeile.
Das Skript kann aus einem eingebundenen Skript heraus nicht gestoppt werden.

 

VBScript, JavaScript, PerlScript

Mit diesem Befehl ist es auch möglich, einzelne Skriptbefehle oder ganze Scriptlets von externen Skriptsprachen auszuführen. Hierzu können Sie als Skriptdatei eine VBScript- (*.VBS) JavaScript- (*.JS) oder PerlScript-Datei (*.ps) angeben, die dann komplett bzw. in der oben angegebenen Funktion bzw. Prozedur ausgeführt wird.

Hinweis: VBS, JS und PS können nur unter Windows verwendet werden. Außerdem muss die jeweilige Sprachengine und die MS-Komponente Interop.MSScriptControl.dll auf dem Rechner installiert sein oder im cX-Ordner liegen. Diese Komponente kann auch kostenlos im Internet bezogen werden, falls sie nicht vorhanden ist.

 

Batch/CMD

Hier können CMD-Befehle bzw. .BAT-Dateien ausgeführt und deren Ergebnis in die Ergebnisvariable geladen werden.

 

Powershell

Auch Powershell-Skripte (*.ps1) können ausgeführt und deren (Text-)Ergebnis in die Ergebnisvariable geladen werden.

 

Sie können auch im Eingabefeld Skriptcode eine oder mehrere Skriptzeilen einer dieser Sprachen eingeben. In diesem Fall müssen Sie eine der Skriptarten aktivieren, damit das Programm weiß, welcher Art die eingegebenen Befehle sind.

Wird eine Funktion angegeben, muss diese natürlich im externen Code existieren und wird dann aufgerufen, wobei ein eventueller Rückgabewert in die angegebene Variable geschrieben wird. Andernfalls startet das Skript in der ersten Zeile, wobei kein Rückgabewert möglich ist.

Wird eine Timeout-Zeit angegeben ( (0=keine Begrenzung, Standard=10 Sekunden), wird das externe Skript nach Ablauf dieser Zeit nach einer Rückfrage abgebrochen und ein Laufzeitfehler ausgelöst.

 

In dem externen VBS-, JS- oder Perl-Skript können Sie über folgende Ausdrücke auf click.EXE-Variablen oder -Funktionen zugreifen:

 

cX.Versionliefert die verwendete click.EXE-Version
cX.Var("Variablenname")Setzt oder holt den Inhalt der click.EXE-Variablen [Variablenname]
cX.Aufruf "Marke"ruft das click.EXE-Unterprogramm ::Marke auf
cX.GeheZu "Marke"setzt die weitere click.EXE-Ausführung (nach Ablauf des externen Skripts) auf die angegebene Marke

 

 

Beispiel:

 

Hauptskript:

Eingabe  "Bitte geben Sie eine Zahl ein:" in [Wert_1] (Kein Abbruch, Überschrift 'Mittelwertberechnung: 1. Zahl')

Eingabe  "Bitte geben Sie eine Zahl ein:" in [Wert_2] (Kein Abbruch, Überschrift 'Mittelwertberechnung: 2. Zahl')

 

Externe Funktion  Funktion 'Makro1_Mittelwert' aus Datei 'Externe_Funktion_Makro_Mittelwert.CX5'

 

Meldung  "Das externe Skript hat den Mittelwert errechnet.¶Das Ergebnis lautet: [Mittelwert]" (Titel: 'Externe Funktion - Mittelwert', 'OK')

 

Dieses Beispiel besteht aus 2 Skripten: dem Hauptskript und dem externen Skript, welches vom Hauptskript mittels dem Befehl Externe Funktion aufgerufen wird. Wenn das Hauptskript gestartet wird, wird der Benutzer aufgefordert, 2 Zahlen einzugeben, um den Mittelwert zu berechnen. Nach den Eingaben dieser Werte wird das externe Skript (Makro) aufgerufen. In diesem Makro werden die beiden Werte addiert und die Summe durch 2 geteilt. Das Ergebnis dieser Berechnung wird in die Variable [Mittelwert] gesetzt. Wenn die Berechnung abgeschlossen ist, geht es im Hauptskript mit der Anzeige des Mittelwertes weiter.

 

Externes Skript (Externe_Funktion_Makro_Mittelwert.CX5):

::  Makro1_Mittelwert

Setze  in [Mittelwert]:  '([Wert_1]+[Wert_2])/2' (berechnen)

Zurück

 

 

 


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