| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1839 人关注过本帖
标题:EVALUATE( )的用法疑问请教
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用sylknb在2015-6-19 11:20:33的发言:
xm="5"
?EVALUATE('xm')**5它为字符型
?EVALUATE(xm)**5为数值型
xm="a"
?EVALUATE(["a"])它显示a

同样:
a=2
xm="a+1"
?EVALUATE(xm)
?EVALUATE("xm")
?EVALUATE("a+1")
2015-06-19 11:39
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用sylknb在2015-6-19 11:38:54的发言:

xm="a"
?EVALUATE(["a"])它显示a 它为什么可行

变通一下麻,你执着,我有耐性。
其实就是这样,比较一下之前的 xm = "a",不同的吧,我之前也说过用“代数”法去理解。
xm = ["a"]
?EVALUATE(xm)
2015-06-19 11:43
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
不是执着,而是脑筋搭牢
2015-06-19 11:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
以下是引用sylknb在2015-6-19 11:55:40的发言:

不是执着,而是脑筋搭牢

给 EVALUATE() 套牢了。
其实要理解 EVALUATE(字符串表达式),VFP的帮助文件已经说得够详细,无非就是返回一个用字符串来表达的计算式的结果。
如:
xm = "a"
ret = EVALUATE(xm)
等同
ret = a   && 明显是变量a不存在

又如:
a = 1
xm = "a+5"
ret = EVALUATE(xm)
等同
ret = a+5  && 结果 1+5=6

又如:上例去掉a
xm = "5"
ret = EVALUATE(xm)
等同
ret = 5  && 结果数值 5

又如:
a = "1"
b = "2"
xm = "a+b"
ret = EVALUATE(xm)
等同
ret = a+b  && 结果字符串"12"
2015-06-19 14:33
muyubo
Rank: 9Rank: 9Rank: 9
来 自:山东莱芜
等 级:蜘蛛侠
威 望:3
帖 子:471
专家分:1017
注 册:2011-3-6
收藏
得分:5 
得自己慢慢理解
2015-06-19 14:49
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:5 
以下是引用sylknb在2015-6-19 11:34:04的发言:

指定要计算的表达式。cExpression 可以是一个原义字符串,或是被附上引号的任何数据类型的有效 Visual FoxPro 表达式、变量、数组元素或字段
1,什么是原义字符串
2。是不是所有有效的表达式都要加" "?

1、所谓原义字符串,就是指该字符串内容只作为文本,而不另外再作计算。比如:"ABC"、"课程代码"等等;

2、作为该函数的参数,只能是字符型,但并不是都要加引号,也可以用字符型的变量直接作为参数。此时,它对变量的内容进行计算。看下面的栗子:

   A、Xm="[ABC]"-->?EVALUATE(Xm),结果为:ABC。
      分析:该函数先解析内存变量Xm的内容,内容是“[ABC]”(不含两侧双引号,所以我用的是中文双引号,下文均同)。而“[ABC]”在FoxPro中是字符串常量,所以输出了“ABC”。

   B、Xm="[ABC]"-->?EVALUATE(Xm+"D"),结果为:操作符/操作类型不匹配。
      分析:同样,该函数先解析内存变量Xm的内容,内容是“[ABC]”,再连接上字符“D”,整个参数就是“[ABC]D”。这时,对“[ABC]D”进行计算时发现,它既不是一个变量,又不是一个有合理运算符的表达式,FoxPro看不懂了,于是就提醒错误。

   C、Abc=3-->Xm="ABC"-->?EVALUATE(Xm+"+5"),结果为:8。
      分析:注意:这里的Xm内容里已经没有方括号了。根据上面2个栗子所述,这里的参数被解析为“ABC+5”。那么,内存变量Abc=3,结果自然就是3+5=8了。

   最后来一个,你自己动脑筋想想答案是什么,再用FoxPro验证下和你想的是否一致,思考一下为什么是这个答案。如果这道题你想对了,那么恭喜你,这个函数你学会了。
   D、DE=5-->Abc=3-->Xm="[ABC]"-->?EVALUATE(Xm+[+DE]),结果为:?
2015-06-19 22:29
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
taifu945:分析的太好了
最后的式子:
  DE=5
   abc=3
xm="[ABC]"
?EVALUATE(XM+[+DE])  结果为:操作符/操作类型不匹配。
xm-->[ABC]是字附串常量,[+DE])为数值5 [ABC]5,道理既不是一个变量,又不是一个有合理运算符的表达式。
上面的理介对否?
祝端午节快乐!
2015-06-20 09:02
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用sylknb在2015-6-20 09:02:18的发言:

taifu945:分析的太好了
最后的式子:
  DE=5
   abc=3
xm="[ABC]"
?EVALUATE(XM+[+DE])  结果为:操作符/操作类型不匹配。
xm-->[ABC]是字附串常量,[+DE])为数值5 [ABC]5,道理既不是一个变量,又不是一个有合理运算符的表达式。
上面的理介对否?
祝端午节快乐!

恭喜,基本上答对了,就是有一点点小瑕疵:参数解析出来是“[ABC]+5”,而不是“[ABC]5”。它倒是有一个合理的运算符,只是运算符两边的数据类型不兼容,无法直接进行运算。


[ 本帖最后由 taifu945 于 2015-6-20 16:22 编辑 ]
2015-06-20 16:21
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用taifu945在2015-6-20 16:21:03的发言:


恭喜,基本上答对了,就是有一点点小瑕疵:参数解析出来是“[ABC]+5”,而不是“[ABC]5”。它倒是有一个合理的运算符,只是运算符两边的数据类型不兼容,无法直接进行运算。
谢谢,如此耐心
2015-06-21 09:39
快速回复:EVALUATE( )的用法疑问请教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025710 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved