回 帖 发 新 帖 刷新版面

主题:奇妙的宏替换

VFP的宏替换,的确是一样很莫名其妙的东西.
因为有了宏替换,VFP比很多语言都危险得多,也方便得多.


有一道算式:
1   2   3   4   5   6   7   8 = N
上算式中的N由键盘给出(1<=N<=100),请在算式的每个空挡内都填入+、-、*、/四种运算符中的任意一个,使结果等于N


n1=VAL(INPUTBOX("输入目标值N:","输入"))
a1="1"
For i = 2 To 8
    a1=a1+" "+LTRIM(Str(i))
Next
For i1 = 0 To 4 ^ 7
    f1=i1
    FOR j1=1 TO 7
        a1=Stuff(a1,j1*2,1,SUBSTR("+-*/",MOD(f1,4)+1,1))
        f1=INT(f1/4)
    ENDFOR 
    IF n1=&a1    [color=ff00ff]用其他语言可要费一番周折.[/color]
       MESSAGEBOX(a1)
       EXIT 
    ENDIF 
NEXT

回复列表 (共32个回复)

沙发


用 EVALUATE() 函数比 & 快的多,可靠的多。

n1=VAL(INPUTBOX("输入目标值N:","输入"))
a1="1"
For i = 2 To 8
    a1=a1+" "+LTRIM(Str(i))
Next
For i1 = 0 To 4 ^ 7
    f1=i1
    FOR j1=1 TO 7
        a1=Stuff(a1,j1*2,1,SUBSTR("+-*/",MOD(f1,4)+1,1))
        f1=INT(f1/4)
    ENDFOR 
    IF n1=[color=FF0000]EVALUATE(a1)[/color]   && 用其他语言可要费一番周折.
       MESSAGEBOX(a1)
       EXIT 
    ENDIF 
NEXT

板凳

有一些地方EVAL()是替代不了&的。

3 楼

的确...

有体会

4 楼

()                最快,用在名称,路径。
EVALUATE()         快, 用在计算值的方面。
&                       全功能,速度慢。
EXECSCRIPT( ) 运行多行代码    速度最慢

5 楼

好一座专家楼!再顶一层.

6 楼

[quote]有一些地方EVAL()是替代不了&的。
[/quote]

7 楼

经测试,cbl的方法比MOZ的快了0.469-0.375 =0.094 秒 
--------------------------------------------------
请问cbl518:
EXECSCRIPT( )
怎么用?
可以运行一段循环语句吗?
(最近我也懒散了,不去自己偿试,老喜欢问人)

8 楼

顾名思义,是执行脚本用的。

9 楼

[quote]经测试,cbl的方法比MOZ的快了0.469-0.375 =0.094 秒 
--------------------------------------------------
请问cbl518:
EXECSCRIPT( )
怎么用?
可以运行一段循环语句吗?
(最近我也懒散了,不去自己偿试,老喜欢问人)[/quote]


我刚看帖子,没及时回复,请原谅

[color=FF0000]c1="FOR i=1 TO 10"+CHR(13)+ "?i "+CHR(13)+"ENDFOR"
EXECSCRIPT( c1)[/color]

你也可以按编程方法,写在备注字段中,在执行。

10 楼

谢谢cbl先生,这个函数很有用,我收藏了!也谢谢MOZ先生建了一幢好楼!

我来回复

您尚未登录,请登录后再回复。点此登录或注册