| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 473 人关注过本帖
标题:有关宏代函数使用中遇到的疑问
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:7 
有关宏代函数使用中遇到的疑问
有关宏代函数使用中遇到的疑问
bmk51表中第一个字段名为kdm,它的值是5101,

现用宏代函数

在窗口命令中

use bmk51

a=fields(1)

? a

显示:kdm 字段
1、如果把?a 改用 ?&a. 显示:5101 (kdm的值)

2、如果把?a 改为用 ?"&a." 显示:kdm

3、在窗口命令中?&a. 显示:5101 (kdm的值),但在程序中显示字段名kdm
请行家指教。

2011-06-25 16:57
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
命令窗口中和程序中应用,显示应该是相同的:
a=fields(1)
?&a

相互学习,互相交流,共同提高。
2011-06-25 17:20
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
a=fields(1)
?&a
这样显示的是字段的值而不是字段名。
2011-06-25 17:23
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你程序中想幹什麽?把代碼寫出來看看。

授人以渔,不授人以鱼。
2011-06-25 17:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
宏操作符(&)是在VFP解釋層面中起作用的,其效果取決於你代碼中的書寫形式。如果你熟悉C類語言,則VFP的宏代換(&)就相當於C類的#define。

授人以渔,不授人以鱼。
2011-06-25 17:44
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
for i=1 to fcount()
a=fiel(i)
do case
case type(fiel(i))='T'
repl all &a. with CTOD('        ') for isnull(&a.)   ///把字段类型为T的字段替换成 ‘  ’前面的&a.不是表示字段名吗?


case type(fiel(i))='C'
repl all &a.  with ' ' for isnull(&a.)   //把字段类型为c的字段替换成 ‘  ’前面的&a.不是表示字段名吗?






OTHERWISE
endcase
endfor
2011-06-25 19:08
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏(1)
得分:20 
沒錯呀,這裏的&a.就是字段名kdm,不是字符串!

宏代換是這樣看的:代碼repl all &a. with ' ' for isnull(&a.),VFP解釋器讀入程序文本,遇到這條語句,用變量a的値替換文本中的&a.。因為a = "kdm",kdm是値,所以用kdm替換&a.,就是repl all kdm with ' ' for isnull(kdm),然後實際執行這條替換後的語句。如果a不是字符串"kdm",而是數値,比如a = 12,替換後的語句就是repl all 12 with ' ' for isnull(12)。

在窗口命令中,? &a.的時候,替換出來的結果是? kdm,而在? 命令中kdm被理解爲字段變量,所以?命令將輸出kdm的値。

[ 本帖最后由 TonyDeng 于 2011-6-25 19:37 编辑 ]

授人以渔,不授人以鱼。
2011-06-25 19:33
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
多谢了,TonyDeng楼兄
2011-06-25 21:17
快速回复:有关宏代函数使用中遇到的疑问
数据加载中...
 
   



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

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