LOTUSSCRIPT 言語
引数の参照渡し
引数が参照渡しされる場合、C 関数は値領域への 4 バイトのポインタを受け取ります。
場合によっては、実際のスタック引数はパブリックに読み取ることのできる構造に変更されます。すべての場合に、データは呼び出される側の関数によって変更されることがあり、変更された値は LotusScript の変数や製品オブジェクトのプロパティに反映されます。このようなプロパティの場合、変更は呼び出しから値が返された直後に発生します。
(コレクションを含む)
引数の値渡し
引数が値渡しされる場合、C 関数は引数の実際の値のコピーを受け取ります。
呼び出しが変数で行われる場合、C 関数による文字列の変更は変数に反映されます。ByVal として宣言された LotusScript 関数の文字列引数の場合には、これは当てはまりません。
値渡しできるデータ型は、すべて参照渡しできます。
引数 ByVal 0& は、引数が Any 型として宣言される場合は、C 関数への null ポインタを指定します。
例
Declare Sub SemiCopy Lib "mylib.dll" _ (valPtr As Long, ByVal iVal As Long) Dim vTestA As Long, vTestB As Long vTestA = 1 vTestB = 2 SemiCopy vTestA, vTestB
' The C function named SemiCopy receives a 4-byte pointer to a ' 2-byte integer containing the value of vTestA, and a 2-byte ' integer containing the value of vTestB. ' Since vTestA is passed by reference, SemiCopy can dereference ' the 4-byte pointer and assign any 2-byte integer to that ' location.When control returns to LotusScript, vTestA ' contains the modified value.Since vTestB was passed by ' value, any changes made by the C function are not reflected ' in vTestB after the function call.
関連項目