# Skript

Führt benutzerdefinierten JavaScript-Quellcode aus, der mit demDialogfeld „Skript bearbeiten“ erstellt und bearbeitet wird. Die Script-Funktion enthält JavaScript-Quellcode (der als JS-Datei gespeichert werden kann), der das Verhalten definiert. Der Quellcode definiert nur das Verhalten für die einzelne Script-Funktion. Wenn ein Job mehrere Script-Funktionen enthält, wird eine in einer Script-Funktion definierte Variablen nur für diese bestimmte Script-Funktion und nicht für alle Script-Funktionen im Job definiert.

Hinweis:

- Die folgenden Grenzwerte gelten für den Speicher, der von allen in jedem Job verwendeten Script-Funktionen und externen Script-Modulen zugewiesen wird:

  - Die maximale Anzahl von Bytes, die dem Skriptspeicher zugewiesen werden, beträgt 4 MB.
  - Die maximale Anzahl von Bytes, die dem Stapel zugewiesen werden, beträgt 64 KB.
- Um eine unnötige Speicherzuordnung zu vermeiden, sollten alle nicht verwendeten Funktionen aus dem Skript gelöscht werden (z. B. jene im Standardbeispielskript, wenn sie nicht verwendet werden). Als Beispiel verbraucht ein Skript mit einer nicht verwendeten Beispiel-Diagrammfunktion, die ein Zeichenfolgenobjekt generiert und es zeichnet, Speicher und CPU-Zyklen.

- Die Funktionalität einer Script-Funktion, deren Zelle aufgefordert wurde, die zugehörige Ausführung zu deaktivieren, unterscheidet sich von anderen Tabellenfunktionen. Im Allgemeinen behalten andere Tabellenfunktionen den letzten Wert, der nach der Ausführung der Funktion aufgezeichnet wurde. Alle Funktionen, die die deaktivierte Funktion referenzieren, geben den letzten aufgezeichneten Wert zurück. Da die Script-Funktion jedoch die Ausführung ihrer internen Methode „run“ erfordert, zeigt sie beim Laden einer deaktivierten Script-Funktion eine Script-Datenstruktur an, aber jede Get-Funktion, die sie referenziert, gibt #ERR zurück, da die Get-Funktion einen bestimmten zurückgegebenen Wert erwartet, der nicht zurückgegeben wird, da die Script-Funktion nicht ausgeführt wurde.

## Skript – Eingaben

Im Gegensatz zu konventionellen In-Sight-Tabellenfunktionen kann die Script-Funktion eine Vielzahl unterschiedlicher Eingabeargumente (von 1 bis 100) akzeptieren. Jedes Argument muss eine Zellreferenz, ein Buchstabenwert oder ein Ausdruck sein, der einen der folgenden Werttypen zurückgibt:

- Eine Zahl
- Eine Zeichenfolge
- Ein Bild
- Ein Ereignis
- Ein Form-Objekt
- Eine Binary-Datenstruktur
- Eine Datenstruktur wie Blob, Kante, Histogramm, oder Patterns Vision Data Access functions
- Eine Object- oder Array-Datenstruktur (die von einer anderen Script-Funktion zurückgegeben wird)

Hinweis:

- Wenn ein Zellenbereich als Argument angegeben wird, wird er auf die einzelnen im Bereich enthaltenen Zellreferenzen erweitert und verbraucht daher so viele Argumente, wie im Zellenbereich enthalten.
- Wenn ein Argument einer Script-Funktion ein Verweis auf eine andere Zelle ist, die eine Blob-, Edges-, Histogram-, oder Patterns-Datenstruktur zurückgibt, kann das Objekt, das an die Script-Funktion übergeben wird, nur so lange verwendet werden, bis die Run-Methode wieder verfügbar ist. Die Script-Funktion kann dieses Objekt direkt zurückgeben und es kann als Ergebniswert der Zelle mit der Script-Funktion verwendet werden. Wenn das Skript dieses Objekt jedoch intern speichert (z. B. indem es in seiner Zeichen-Methode verwendet wird), wird das Objekt nach der Rückgabe der Methode „run“ nicht verwendet werden, und der Versuch, eine seiner Methoden aufzurufen, führt zu einem Fehler. Dies gilt auch, wenn das Skript eine Ergebnisstruktur zurückgibt, z. B. eine Eigenschaft eines Skript-Objekts, das von der Methode „run“ zurückgegeben wird. Zum Beispiel kann keine dieser Eigenschaften von einer Get-Funktion oder anderen Script-Funktionen verwendet werden, da die zugrunde liegenden Objekte nicht mehr gültig sind.

- Beim Schreiben eines Skripts kann das Einschließen von Code, der Eingabeargumente überprüft, helfen, Fehler zu reduzieren, wie im Beispiel unten dargestellt:

                              function Tool()
      {
      }

      module.exports = Tool;

      function isNumber(n) {
         if (n === undefined || n == null || isNaN(parseFloat(n)) || !isFinite(n))
            return false;
         return true;
      }

      Tool.prototype.run = function(x, y){
         if (!isNumber(x) || !isNumber(y))
            throw new Error("Usage: Requires 2 numeric arguments");
         return +x + +y;
      }

Hinweis: Um auf die Parameter Breite oder Höhe eines Bereichsobjekts innerhalb eines Skripts zuzugreifen, verwenden Sie .w und .h.

>     Script.prototype.run = function (image, myRegion) {

> >     return {
> >         x: myRegion.x,
> >         y: myRegion.y,
> >         //width: myRegion.width,
> >         //height: myRegion.height,
> >         width: myRegion.w,
> >         height: myRegion.h,
> >         angle: myRegion.angle,
> >         curve: myRegion.curve
> >     };

>     }

## Skript – Ausgaben

Rückgabewert | Die Funktion kann einen Wert der folgenden Typen zurückgeben: Eine Zahl True (1) oder False (0) Eine Zeichenfolge Eine Binary-Datenstruktur Eine Blob-, Edge-, Histogram-, oder Patterns-Datenstruktur Ein Form-Objekt Ein Objekt Ein Bild null, nicht definiert oder keine Rückgabeanweisung (was einem leeren Objekt gleichgesetzt wird). Die Funktion gibt #ERR zurück, wenn eine der folgenden folgenden Bedingungen erfüllt ist: Der Quellcode enthält keine Run-Methode. Einer der Argumentwerte ist keiner der unterstützten Typen. Der Konstruktor gibt eine Ausnahme aus. Hinweis: Die GetErrorString-Funktion kann verwendet werden, um die Ausnahmemeldung abzurufen, wenn eine solche in den Quellcode geschrieben wurde. Alle Ausnahmen geben denselben Fehlercode (20000005) zurück.

## Skript Vision Data Access functions

Die Get-Funktion wird verwendet, um auf Eigenschaften von Objekten zuzugreifen, die von einer Script-Funktion zurückgegeben werden.