我有个过程,接一个字符串变量,然后用case总是会错,我是初学望请教.
function PUBFUN(CONST YbComStr:widestring;CONST HostIP:widestring;CONST CryptXml:widestring;CONST InXml:widestring;OutParm3:PChar): integer;case YbComStr of
        'MODIFYCARD':    wsReturn := DModule.DCOMConnection1.AppServer.MODIFYCARD(wsParm1,wsParm2);
        'GETPSNINFO':    wsReturn := DModule.DCOMConnection1.AppServer.GETPSNINFO(wsParm1,wsParm2);
        end;请教一下,应该怎么写才是对的.

解决方案 »

  1.   

    case 表达式不支持字符串模式,只能使用整数。
      

  2.   

    楼上说的不严格正确, case 支持的 ordinal type, 如: 整数, 字符, 布尔, 枚举 都是可以的
      

  3.   

    使用 if (YbComStr = 'MODIFYCARD') then
    wsReturn := DModule.DCOMConnection1.AppServer.MODIFYCARD(wsParm1,wsParm2)
    else if(YbComStr = 'GETPSNINFO') then 
    wsReturn := DModule.DCOMConnection1.AppServer.GETPSNINFO(wsParm1,wsParm2);
      

  4.   

    case好像不支持字符串但可以是整数
      

  5.   

    我已经想到办法了,用if ..then肯定不行,因为这种字符串用34个.
    我用的是枚举,然后再用 
    for i = 0 to 33
    if strarray[i] = ybcomstr thencase 0
    case 1
    ...
    这种办法来解决的,谢谢各位!