| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2070 人关注过本帖, 1 人收藏
标题:不存在表字段情况下,为什么二个相同的内存变量名i另一个要加上m.变量名?
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏(1)
已结贴  问题点数:20 回复次数:18 
不存在表字段情况下,为什么二个相同的内存变量名i另一个要加上m.变量名?
只知道当表字段变量名与内存变量名相同的时候,内存变量前面要加上m,现在是没有表字段名变量,二个相同的变量名,为什么另一个要加上m.。
例子很多都没有表字段名,为什么二个相同的变量名另一个要加上m.?

例如1:

 LPARAMETERS nError, cMethod, nLine
   DoDEFAULT( m.nError, m.cMethod, m.nLine )

例如2
LOCAL loMember, laDEEvents[1], liMember, liMembers, loBoundMember
 liMembers = AMEMBERS( laDEEvents, THIS, 1 )
  FOR liMember = 1 TO m.liMembers
            IF INLIST( UPPER( laDEEvents[ m.liMember, 1] ), "INIT", "DESTROY" )
搜索更多相关主题的帖子: 内存 
2013-01-07 10:28
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
VF中的变量分内存变量和字段变量,如果一个内存变量和字段变量同名时,我们用 M.变量名或M->变量名 来访问内存变量,以示和字段变量区别。

如:表中有 姓名 成绩
           王一  800
           李密  756
在命令窗口定义一个内存变量 姓名="张凡"
这时如果要显示张凡,就需要在命令窗口输入 ?M.姓名
如果直接在命令窗口输入 ?姓名
结果会是 王一


你例子中用m.变量名 正是为避免字段变量名与内存变量名重复
2013-01-07 11:40
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
我说的是没有数据表字段变量
2013-01-07 12:07
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
你先试试那些红的变量在没有“m.”的情况下运行会出现什么结果,然后再从VFP的反应中找线索。
2013-01-07 14:13
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:15 
如果同时存在着相同名字的字段变量和内在变量,vfp默认这个变量为字段变量。

当出现一个变量时,vfp先从字段变量中去找,如果不在,再从内存变量中去找。

当加了m.时,vfp直接就从内存变量中去找,而不再查找字段变量。所以,用上m.可以提高vfp查找内存变量的速度。

坚持学习vfp,QQ:306805680
2013-01-07 14:40
cxzbzgz
Rank: 8Rank: 8
来 自:云南楚雄
等 级:贵宾
威 望:24
帖 子:298
专家分:808
注 册:2012-6-15
收藏
得分:0 
    当两个内存变量名相同,你不加以区分的话,系统不知道你在程序中要求的是谁去执行,所以二个相同的变量名另一个一定要加上m.(当然,你在变量前加上其他字母或者代码也行,只要能区分这两个变量不是同一个变量)。就如同一个单位有两姓名个完全相同的人一样,你叫他时,有时他会两个同时回答,有时一个都不回答一样。一般来说,做程序要切忌变量名完全相同,否则容易使程序在修改和执行时出现问题,再者,程序的简洁和可读性也是一个问题。

学习交流VFP,QQ:248561326。
2013-01-07 14:50
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
问题不在于字段变量与内存变量同名。楼主说了,是在无字段变量的情况下,有些内存变量需要加“m.”才能用,有些不需要。所以,把需要加“m.”的内存变量去掉“m.”,看看VFP作何提示,再从中去找线索,这样比较容易找到原因。按理说,不与字段变量重名的内存变量是不需要加“m.”,是否又是网上山寨VFP9.0的一个bug?
2013-01-07 15:24
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
也许就是作者的习惯呗

DO IT YOURSELF !
2013-01-07 15:37
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
附上原代码。来于vfp9权威指南第355页报表的数据环境 。
数据表中都是中文字段,所以谈不上是否是同名变量的问题,我把所有的前面是m.去掉也没有提示。
把myde加到报表数据环境后生的的beforeopentables事件代码.rar (4.45 KB)

MyClassLib类.rar (1.67 KB)


里面不少代码不懂,不知何位高手能指教一下。


[ 本帖最后由 sylknb 于 2013-1-7 17:40 编辑 ]
2013-01-07 17:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
vfp6以上,不需要用M区分内存变量名,如果内存变量名与字段名相同,系统会提示错误。

坚守VFP最后的阵地
2013-01-07 18:10
快速回复:不存在表字段情况下,为什么二个相同的内存变量名i另一个要加上m.变量 ...
数据加载中...
 
   



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

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