delphi中case语句代替if...else if的问题

代码如下:ifm_ParamFieldsName='@IID'thenm_iIID:=avParameters[iParamCount];ifm_ParamFieldsN... 代码如下:
if m_ParamFieldsName = '@IID' then
m_iIID := avParameters[iParamCount];
if m_ParamFieldsName = __EVEREST_DIVISIONCODE then
vParameterValue := GetCurrentCompany
else if m_ParamFieldsName = __EVEREST_USER then
vParameterValue := GetCurrentUser
else if m_ParamFieldsName = __EVEREST_GMTBIAS then
vParameterValue := GetTimeZoneBias / (60 * 24)
else if m_ParamFieldsName = __EVEREST_INTERNATIONALIZATION then
vParameterValue := IsLocalizationEnabled
else if m_ParamFieldsName = __CZ_EXTENDED_MODE_PARAMETER then
注意的是__EVEREST_DIVISIONCODE 等为字符串变量
展开
 我来答
百度网友6e58d71b4
2011-11-21 · TA获得超过260个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:125万
展开全部
delphi 10前的好像都不行,最新的版本不知道,case 只能数字或字符,case 0:case1:case 'a':
字符串不行,你这个是系统消息,应该有-1,1,0这类信息编号的吧
更多追问追答
追问
或许用枚举类型就可以让这些变量变成有序类型,然后满足case语句只能识别有序类型的要求,不过我也不太清楚delphi是否能将变量定义成枚举类型
追答
我看这代码有有数组啊,可以把消息保存成数组,在用数组下标来用case,其实你把最可能的出现的放在前面点的if里, if的效率还是很高的
百度网友892b6f5
2011-11-21 · 超过27用户采纳过TA的回答
知道答主
回答量:101
采纳率:33%
帮助的人:37.5万
展开全部
每个if换成一个case;就这么简单
更多追问追答
追问
请了解delphi的case语句的一些特殊要求再回答,而且您说的每一个换成case的话就没改动的意义,我是想要一个case来完成所有的判断
追答
那您是大师.您要是有了一个case全都判断完的方法麻烦给小弟讲讲.
非常感谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fauxvis
2011-11-21 · TA获得超过263个赞
知道小有建树答主
回答量:368
采纳率:0%
帮助的人:404万
展开全部
lankii35同学已经给出了方向,
用枚举应该可以解决问题,
这段代码不错啊,有时候我学一些技巧可以自己试试,或者参考VCL源代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式