UniPlot.Call2

Mit der UniPlot.Call2-Methode können Sie UniPlot-Funktionen aus anderen Programmen heraus (ActiveX-Controllern) aufrufen. UniPlot.Call liefert eine Matrix zurück, während UniPlot.Call2 einen Vektor zurückliefert.

ret = UniPlot.Call2(ssFuncName, arg1, arg2, ...)

Returnwert

ret ist der Return-Wert. Folgende Datentypen werden unterstützt: Falls ssFuncName einen Skalar (1 x 1 Matrix) zurückliefert, enthält ret einen skalaren Wert des Typs VT_R8.

Falls ssFuncName einen Vektor zurückliefert, (1 x n-Matrix oder n x 1-Matrix) enthält ret einen 1 x n-Vektor.

Falls ssFuncName eine Matrix zurückliefert (n x m-Matrix, n, m != 1), enthält ret eine n x m-Matrix.

UniScript-Stringmatrizen werden in VT_BSTR umgewandelt. Die Dimensionalität ist wie oben beschrieben.

Andere UniScript-Typen (UniScript-Variant-Matrizen, Objekte, komplexe Zahlen) werden nicht unterstützt.

Parameter

ssFuncName

ssFuncName ist der Name der UniScript-Funktion, die aufgerufen werden soll.

arg1

arg1 ist der erste Parameter, der an die Funktion mit dem Namen ssFuncName übergeben wird. Die Anzahl der Parameter die an die Funktion übergeben werden kann liegt zwischen 0 und 16. Für die Parameter werden die folgenden Datentypen unterstützt:

Skalare Elemente:

VT_UI1, VT_I2, VT_I4, VT_R4, VT_R8, VT_VARIANT, VT_BSTR, VT_DISPATCH.

Vektoren (Arrays mit Dimension 1):

VT_R8, VT_VARIANT, VT_BSTR.

Beispiel

Das folgende Excel-Programm (VBA) ruft die UniScript-Funktion MessageBox auf:

ssMessage$ = "This is a Test"
Dim svStyles(2) As String
svStyles(0) = "Test"
svStyles(1) = "ICONSTOP"
svStyles(2) = "YESNO"
Set upApp = CreateObject("UniPlot.Application")
YesNo = upApp.Call("MessageBox", ssMessage$, svStyles)

Beispiel

Das folgende Excel-Programm (VBA) ruft die UniScript-Funktionen UniPlot.Call und UniPlot.Call2, sowie die Funktionen UniScript.Call und UniScript.Call2 des UniScript-Servers usserv32.exe auf.

../../_images/vba.png

Der VBA-Debugger zeigt die Rückgabewerte der Call- und Call2-Funktionen. Call liefert eine Matrix zurück, während Call2 einen Vektor zurückliefert.

Sub Test()
    Dim a(1 To 3) As Double
    Set up = CreateObject("UniPlot.Application")
    Set us = CreateObject("UniScript32")
    a(1) = 1
    a(2) = 2
    a(3) = 3
    b = up.Call("sin", a)
    c = up.Call2("sin", a)
    d = us.Call("sin", a)
    e = us.Call2("sin", a)
End Sub

id-537400