我目前正在为SOAP服务开发客户端。
WSDL导入工作正常,但我遇到了需要将项添加到动态数组的问题。
delphi中的声明:
Array_Of_attributWS = array of attributWS;
dienstleistungWS = class(TRemotable)
private
[..]
public
[..]
published
property attributeWS: Array_Of_attributWS
Index(IS_OPTN or IS_UNBD or IS_NLBL or IS_UNQL)read GetattributeWS
write SetattributeWS stored attributeWS_Specified;
我想从其他单位向attributeWS添加项目。 要添加项目,请使用以下代码:
SetLength(dynArray, Length(dynArray)+1);
dynArray[High(dynArray)] := item;
但它不会让我,我得到以下错误: E2197常量对象不能作为var参数传递
有没有办法轻松添加动态数组? 或者有没有办法将数组转换为列表,以便我可以做.Append(item)?
Delphi版本XE6 谢谢!
答案 0 :(得分:0)
如果您检查SetattributeWS
实现,您会看到它只是将动态数组作为const
参数,将其存储并将内部布尔变量标记为true(表示参数已通知)。
const
部分导致您看到的 E2197 错误。
最好的选择是使用相同类型的本地dynamic array
变量,然后:
attributeWS
+ 1的实际长度。attributeWS
复制到本地变量,然后添加新项目。attributeWS
属性。实际上,最好不要将动态数组分配给请求属性,直到它填满所有必需的元素,但这可能取决于您的需求。