SafeArray
(SafeArraysから転送)
COM では、配列が、SafeArray という特殊なデータ型を介して渡されることを必須としています。それを行うためには、特殊 COM 関数を呼び出すことで SafeArray を作成および破壊でき、1 つの SafeArray 内のすべての要素は、有効なオートメーション互換型でなければなりません。Delphi コンパイラには、COM SafeArray の情報を組み込んであり、SaveArray を作成、コピー、破壊するための COM API を自動的に呼び出します。
Delphi:
procedure HighLightLines(Lines: PSafeArray);
C++:
HRESULT STDMETHODCALLTYPE HighlightLines(LPSAFEARRAY Lines)
タイプ ライブラリ エディタでは、 SafeArray は要素の型を指定しなければなりません。たとえば、テキスト ページからの次の行は、Interger 型要素の SafeArray をパラメータとするメソッドを宣言しています。
HRESULT _stdcall HighlightLines(SAFEARRAY(long) Lines);
メモ: SafeArray 型をタイプ ライブラリ エディタで宣言する際、要素の型を指定しなければなりませんが、生成された _TLB ユニット内での宣言では、要素の型が指定されていません。