gpt4 book ai didi

delphi - 在Delphi自动化服务器中,如何将字符串数组返回给客户端(string[])

转载 作者:行者123 更新时间:2023-12-02 03:10:01 25 4
gpt4 key购买 nike

我正在 Delphi 中开发一个自动化服务器,有几个属性需要返回字符串数组。规范要求(带有 3 种语言的示例):

C# 
string[] Names { get; }

Visual Basic
ReadOnly Property Names As String()
Get

Visual C++
property array<String^>^ Names {
array<String^>^ get ();
}

我尝试了很多方法来做到这一点,但仍然卡住了,包括 SafeArrays 和 Variants 作为 RIDL 类型。我最近的尝试(所以我至少有一个例子)是:

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[]”类型。”

提前致谢!

最佳答案

解决方案是创建从零开始的变体数组,而不是 1...X):

V := VarArrayCreate([0,NumFilters-1], VT_BSTR);

for I := 0 to NumFilters-1 do
V[I]:=Filters[I+1];

案件已结!

关于delphi - 在Delphi自动化服务器中,如何将字符串数组返回给客户端(string[]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47381791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com