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.
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
Siehe auch
id-537400