gpt4 book ai didi

delphi - WSDL导入器,用于带有负数的枚举类型

转载 作者:行者123 更新时间:2023-12-03 18:38:58 25 4
gpt4 key购买 nike

我使用了一个使用正号和负号来指示该Web服务调用是否成功的Web服务,如果不是,则这些数字指示错误的类型。使用WSDL导入器(在Delphi 2007,Delphi 2010和Delphi XE中),我得到以下类型定义:

PCRUpdateCodes =(_7,_6,_5,_4,_3,_2,_1,_1,_2,_3,_4);

在WSDL中,右边的最后四个条目为负数。 Delphi编译器给我最后四个条目的错误“重新声明了标识符”。如何使最后四个条目为负数?

这是WSDL的相关部分。

 <xs:simpleType name="PCRUpdateCodes">
<xs:annotation>
<xs:documentation>Codes to describe return codes for an attempted PCR import web service operation</xs:documentation>

</xs:annotation>
<xs:restriction base="xs:integer">
<xs:enumeration value="-7">
<xs:annotation>
<xs:documentation>Permission denied to the client for that organization</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="-6">

<xs:annotation>
<xs:documentation>Permission denied to the client for the operation</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="-5">
<xs:annotation>
<xs:documentation>Invalid username and/or password</xs:documentation>
</xs:annotation>

</xs:enumeration>
<xs:enumeration value="-4">
<xs:annotation>
<xs:documentation>Failed update of PCR, because no PCR exists with the same agency # and PCR #</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="-3">
<xs:annotation>

<xs:documentation>Failed update of PCR marked incomplete, because PCR was previously marked complete</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="-2">
<xs:annotation>
<xs:documentation>Failed update of PCR, because of failing NEMSIS XML validation</xs:documentation>
</xs:annotation>
</xs:enumeration>

<xs:enumeration value="-1">
<xs:annotation>
<xs:documentation>Failed update of PCR marked complete, because of failing logical validation</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="1">
<xs:annotation>
<xs:documentation>Successful update of PCR marked incomplete, but failing logical validation</xs:documentation>

</xs:annotation>
</xs:enumeration>
<xs:enumeration value="2">
<xs:annotation>
<xs:documentation>Successful update of PCR marked incomplete</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="3">

<xs:annotation>
<xs:documentation>Successful update of PCR marked complete, previously marked incomplete</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="4">
<xs:annotation>
<xs:documentation>Successful update of PCR marked complete, previously marked complete, now marked amended</xs:documentation>
</xs:annotation>

</xs:enumeration>
<xs:enumeration value="5">
<xs:annotation>
<xs:documentation>Successful update of PCR marked complete, previously marked incomplete, but with validation warnings</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="6">
<xs:annotation>

<xs:documentation>Successful update of PCR marked complete, previously marked complete, now marked amended, but with validation warnings</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>

最佳答案

我已尝试使用Delphi XE(更新1)提供的WsdlImp.exe 15.0.3953.35171定义枚举。选项“验证枚举成员”已选中。

这是生成的枚举的代码。

TEnumTest = (
_7,
_6,
_5,
_4,
_3,
_2,
_1,
_12,
_22,
_32,
_42,
_52,
_62
);


并为枚举值注册代码。

RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_7', '-7');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_6', '-6');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_5', '-5');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_4', '-4');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_3', '-3');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_2', '-2');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_1', '-1');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_12', '1');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_22', '2');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_32', '3');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_42', '4');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_52', '5');
RemClassRegistry.RegisterExternalPropName(TypeInfo(TEnumTest), '_62', '6');


看起来对我来说还好。如果不明白,可能是因为您有较旧的WsdlImp.exe版本。不得已的方法是手动修改生成的代码。

关于delphi - WSDL导入器,用于带有负数的枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5302364/

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