Delphi枚举REST Server中的类型

时间:2014-10-27 10:20:27

标签: delphi rest enums datasnap

我有一个使用IDE标准'File |创建的Delphi XE5(Update 2)程序新的|其他| DataSnap Server | DataSnap REST应用程序'向导。

当用作服务器方法的参数时,我似乎无法获取枚举类型。所有其他服务器方法都可以工作,例如那些将其他类作为参数,字符串等的方法。当我尝试从Web浏览器调用具有enum参数的方法时,我收到错误消息'Project Project1.exe raised exception class TDBXError with message 'TServerMethods1.EnumString method not found in the server method list'

这是我的基本测试代码:

type
{$METHODINFO ON}
  TMyEnum=(meOne, meTwo);

  TServerMethods1 = class(TDataModule)
  private
    { Private declarations }
  public
    { Public declarations }
    function EchoString(Value: string): string;
    function ReverseString(Value: string): string;
    function EnumString(const AEnum: TMyEnum): string;
  end;
{$METHODINFO OFF}

然而,奇怪的是,如果枚举类型包含在另一个类中,我可以使枚举类型工作,然后将该类传递给我的方法。如果我将enum参数更改为整数,那么这项工作,但我真的不想这样做。

1 个答案:

答案 0 :(得分:0)

不支持使用枚举作为方法参数。如果Datasnap在一个它不支持的方法上找到一个参数类型,它将表现为该方法不存在,这会导致您看到的错误。

有关支持的参数类型的列表,请查看TDSServerClass文档:

http://docwiki.embarcadero.com/Libraries/XE7/en/Datasnap.DSServer.TDSServerClass