我有一个使用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参数更改为整数,那么这项工作,但我真的不想这样做。
答案 0 :(得分:0)
不支持使用枚举作为方法参数。如果Datasnap在一个它不支持的方法上找到一个参数类型,它将表现为该方法不存在,这会导致您看到的错误。
有关支持的参数类型的列表,请查看TDSServerClass文档:
http://docwiki.embarcadero.com/Libraries/XE7/en/Datasnap.DSServer.TDSServerClass