所以我使用Delphi消耗SOAP服务,但努力设置枚举的价值。以下是枚举声明:
Extension = (pdf, xls, txt, xlsx, docx, doc, xml, png, jpg, gif);
一旦导入WSDL,就会在Delphi导入单元中声明。 现在我的应用程序正在使用这个单元,我尝试过以下选项,但无济于事。
选项1 :(不编译。未声明的标识符:'pdf')
uses SOAPAPI_Unit
type
Extension = SOAPAPI_Unit.Extension;
....
procedure TForm1.Button2Click(Sender: TObject);
var
Ext : Extension;
begin
Document.Extension := pdf;
end;
选项2 :(编译,但是我收到服务器错误,指出对象引用没有设置)
uses SOAPAPI_Unit
....
procedure TForm1.Button2Click(Sender: TObject);
var
Ext : SOAPAPI_Unit.Extension;
begin
Document.Extension := Ext(0);
end;
选项3(在主.pas文件中重新声明枚举,但后来我得到不兼容的类型:'SOAPAPI_Unit.Extension'和'formMain.Extension')
uses SOAPAPI_Unit
type
Extension = (pdf, xls, txt, xlsx, docx, doc, xml, png, jpg, gif);
....
procedure TForm1.Button2Click(Sender: TObject);
var
Ext : Extension;
begin
Document.Extension := pdf;
end;
选项4(编译,但从服务器获取对象引用错误
)uses SOAPAPI_Unit
....
procedure TForm1.Button2Click(Sender: TObject);
var
Ext : Extension;
begin
Document.Extension := Ext.pdf;
end;
答案 0 :(得分:5)
默认情况下,WSDL-Importer会生成带有作用域枚举的代码。这要求任何枚举都以其类型开头。在不知道实际导入文件的情况下,我想这应该可行:
uses SOAPAPI_Unit
....
procedure TForm1.Button2Click(Sender: TObject);
begin
Document.Extension := Extension.pdf;
end;