德尔福枚举不同单位

Sti*_*ray 1 delphi enums

所以我使用Delphi消耗SOAP服务,但努力设置枚举的值.以下是枚举声明:

Extension = (pdf, xls, txt, xlsx, docx, doc, xml, png, jpg, gif);
Run Code Online (Sandbox Code Playgroud)

一旦导入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;
Run Code Online (Sandbox Code Playgroud)

选项2 :(编译,但我收到服务器错误,说没有设置对象引用)

uses SOAPAPI_Unit

....
procedure TForm1.Button2Click(Sender: TObject);
var
   Ext : SOAPAPI_Unit.Extension;
begin
   Document.Extension := Ext(0);
end;
Run Code Online (Sandbox Code Playgroud)

选项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;
Run Code Online (Sandbox Code Playgroud)

选项4(编译,但从服务器获取对象引用错误)

uses SOAPAPI_Unit
....
procedure TForm1.Button2Click(Sender: TObject);
var
   Ext : Extension;
begin
   Document.Extension := Ext.pdf;
end;
Run Code Online (Sandbox Code Playgroud)

Uwe*_*abe 5

默认情况下,WSDL-Importer生成带有作用域枚举的代码.这要求任何枚举都以其类型开头.在不知道实际导入文件的情况下,我想这应该可行:

uses SOAPAPI_Unit
....
procedure TForm1.Button2Click(Sender: TObject);
begin
   Document.Extension := Extension.pdf;
end;
Run Code Online (Sandbox Code Playgroud)