COMARRAY( )-Funktion
Gibt an, auf welche Weise Arrays an COM-Objekte weitergegeben werden.
COMARRAY(oObject [, nNewValue])
Rückgabewerte
Numerisch
Parameter
oObject
Ein Objektverweis auf das COM-Objekt.nNewValue
Gibt an, auf welche Weise ein Array an das COM-Objekt übergeben wird, das in oObject angegeben ist. In der folgenden Tabelle sind die Einstellungen für nNewValue aufgeführt, und es wird beschrieben, auf welche Weise das Array an das COM-Objekt übergeben wird.nNewValue Beschreibung 0 Das Array ist ein auf 0 basierendes Array und wird als Wert übergeben. 1 (Standard) Das Array ist ein auf 1 basierendes Array und wird als Wert übergeben. Kompatibel mit früheren Versionen von Visual FoxPro. 10 Das Array ist ein auf 0 basierendes Array und wird als Verweis übergeben. 11 Das Datenfeld ist ein auf 1 basierendes Array und wird als Verweis übergeben. 100 Das Array hat eine feste Größe, die nicht verändert werden kann. Durch Aufruf von COMARRAY( ) ohne das nNewValue-Argument werden die aktuellen Einstellungen zurückgegeben.
Hinweise
Frühere Versionen von Visual FoxPro können Arrays nur als Wert an COM-Objekte übergeben. Das Array, das an das COM-Objekt übergeben wird, ist deshalb meist ein auf 1 basierendes Array, d. h., dass auf das erste Element, die erste Zeile und die erste Spalte des Arrays mit 1 verwiesen wird.
Es gibt jedoch einige COM-Objekte, für die die Übergabe der Arrays als Verweis erforderlich ist, es sei denn, das Array basiert auf 0 (auf das erste Element, die erste Zeile und Spalte des Arrays wird mit 0 verwiesen), oder beides trifft zu. COMARRAY( ) gibt Ihnen die Möglichkeit, anzugeben, auf welche Weise das Array an das COM-Objekt übergeben wird, wobei angenommen wird, dass Sie wissen, wie das Array an das COM-Objekt übergeben werden soll.
Beachten Sie, dass COMARRAY( ) nur dann verwendet wird, wenn Arrays mit der folgenden Syntax an COM-Objekte übergeben werden:
oComObject.Method(@MyArray)
Wird @ weggelassen, wird nur das erste Element des Arrays an das COM-Objekt übergeben und COMARRAY( ) hat keine Wirkung.
Wird der zusätzliche nValue-Wert von 100 wie im folgenden Beispiel gezeigt verwendet, können Sie verhindern, dass ein Array neu dimensioniert werden kann (zum Ausführen dieses Beispiels erstellen Sie zuerst die Klassendefinition in einer DLL-Datei mit dem Namen t1.dll). Sie sollten nach dem Aufrufen des Servers eine Prüfung auf mögliche Fehler durchführen, falls der Server versucht, das Array neu zu dimensionieren.
LOCAL loSvr, laTest
loSvr = NEWOBJECT("t1.arrayhandler")
DIMENSION laTest[10]
laTest=3
? COMARRAY(loSvr,11 + 100)
* The COM server will return an error on the next line of code
* because arrays passed to loSvr will not allow re-dimensioning.
loSvr.RedimensionArray(@laTest,4)
? ALEN(laTest)
DEFINE CLASS ARRAYHANDLER AS CUSTOM OLEPUBLIC
PROCEDURE RedimensionArray(aArray, nRows)
DIME aArray[nRows]
ENDPROC
ENDDEFINE