Delphi で自動化サーバーを開発しており、いくつかのプロパティが文字列の配列を返す必要があります。仕様では次のことが求められます (3 か国語の例を含む):
C#
string[] Names { get; }
Visual Basic
ReadOnly Property Names As String()
Get
Visual C++
property array<String^>^ Names {
array<String^>^ get ();
}
私はこれを行うために多くの方法を試しましたが、RIDL タイプとして SafeArrays と Variant を含めて立ち往生しています。私の最新の試み(したがって、少なくとも1つの例があります)は次のとおりです。
function TFW.Get_Names: OleVariant; safecall;
var
I : integer;
NumFilters:integer;
Filters:FieldsType;
V:OleVariant;
begin
NumFilters:=SplitFields(Filters,FilterNames,',','"');
V := VarArrayCreate([1,NumFilters], VT_BSTR);
for I := 1 to NumFilters do
V[I]:=Filters[I];
Get_Names:=V;
end;
この場合、クライアント アプリケーションは次のエラーを訴えます。
「型 'System.String[*]' のオブジェクトを型 'System.String[]' にキャストできません。」
前もって感謝します!