| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 529 人关注过本帖
标题:自己做的应用有点小问题
只看楼主 收藏
hkbkjjjj
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-6-15
结帖率:0
  已结贴   问题点数:20  回复次数:12   
自己做的应用有点小问题

如图  自己做的一个应用打开时显示找不到别名该咋办   是不是表单的路径不对   如果是该怎么弄
附件: 您没有浏览附件的权限,请 登录注册
2017-06-15 14:31
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:18
帖 子:271
专家分:529
注 册:2014-4-9
  得分:3 
工程项目都没调试好就你编译了?你发这样的图要猜你的程序在哪块出错。根据经验判断应该是在你的程序某个地方,找不到相应的数据表或别名。
2017-06-15 15:32
hkbkjjjj
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-6-15
  得分:0 
回复 2楼 wangzhiyi
那我该发些什么让你知道我错哪了  我也不想做的   这是作业
2017-06-15 15:54
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:114
帖 子:4373
专家分:17104
注 册:2014-5-20
  得分:3 
回复 楼主 hkbkjjjj
1、查找用到“YONGHU”这个名字的地方,看看有无写错名。
2、看看使用“YONGHU”别名之前有无关闭了这个别名的工作区。

2017-06-15 16:15
hkbkjjjj
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-6-15
  得分:0 
回复 4楼 吹水佬
那个搞好了  现在又出现了这个怎么办
附件: 您没有浏览附件的权限,请 登录注册
2017-06-15 16:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:114
帖 子:4373
专家分:17104
注 册:2014-5-20
  得分:0 
回复 5楼 hkbkjjjj
这个要看看代码才好说,要看变量mypath是怎样定义,又是在哪使用。
2017-06-16 04:48
wengjl
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:43
帖 子:1052
专家分:2064
注 册:2007-4-27
  得分:3 
源码发上来,才好诊断

只求每天有一丁点儿的进步就可以了
2017-06-16 08:18
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:1521
专家分:3247
注 册:2012-7-6
  得分:3 
以下是引用hkbkjjjj在2017-6-15 16:32:40的发言:

 那个搞好了  现在又出现了这个怎么办
变量和别名又不一样了:别名是全局的,只要这个表文件开着,哪儿都能用。变量是有“地区”差异的,也就是作用域的问题。VFP里的变量作用域分为:全局(PUBLIC)、局部(LOCAL)、私有(PRIVATE)。

全局变量:无论其在何处定义,主程序及任何过程中都可以使用它;

局部变量:只可以用在定义它的过程体中,不可以在其它过程体中调用;

私有变量:可以在定义它的过程体,以及任何下级过程体中调用。

如果一个内存变量没有定义就直接使用,那么它的作用域等同于私有变量,可以视作“准私有变量”。但与私有变量不同,用PRIVATE命令定义过的私有变量可与上级内存变量同名(虽然我个人不建议这么做),而不会互相影响;但“准私有变量”因为未经定义,所以任何下级过程体中的调用,都视作为调用了同一个变量。见下面的栗子:

**********
* 主程序 *
**********
ABC=2 &&未经定义
DO TEST1
?"主程序ABC="+STR(ABC,1)
CANCEL

*************
* 过程TEST1 *
*************
PROCEDURE TEST1
   PRIVATE ABC &&此处定义了另外一个私有变量ABC,与主程序中的同名
   ABC=3
   ?"过程TEST1中的ABC="+STR(ABC,1)
   RETURN
ENDPROC
输出的答案应该是:
过程TEST1中的ABC=3
主程序ABC=2

如果没有TEST1过程中的“PRIVATE ABC”这一句,那么输出结果就是,两个ABC都是3。因为过程体中没有重新定义ABC,所以在此调用的ABC重新赋值就是对主程序中的ABC进行了重新赋值。所以,回到主程序后,变量ABC中的值自然也就变成了新的。

不知道这么解释,你是否明白?

再回到你这个问题:找不到变量的错误,在VFP看来,通常是没有定义该变量,或之前没有使用过该变量。但从编程者的角度来看,之前肯定是用过的,否则不会平白无故地调用一个自己都不知道的变量。从两个角度综合分析,再加上前面说的作用域问题,我认为可能是:1、在与首次定义(非PUBLIC)或使用该变量的过程体的平行层次或上级层次过程体中调用了该变量,造成调用这个名称的变量时,该变量已经被释放,从而被VFP认为是调用没有定义过的变量;2、用LOCAL定义了变量。因为局部变量只能在自己定义的过程体内使用,不能在其它任何过程体内调用,所以也会发生这个错误;3、手误,把变量名字打错了。

[此贴子已经被作者于2017-6-16 09:14编辑过]

2017-06-16 08:53
wengjl
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:43
帖 子:1052
专家分:2064
注 册:2007-4-27
  得分:0 
taifu945  回答得非常地体贴哦

只求每天有一丁点儿的进步就可以了
2017-06-16 09:44
sylknb
Rank: 4
等 级:贵宾
威 望:12
帖 子:1450
专家分:141
注 册:2006-6-3
  得分:3 
解答的十分清楚!
2017-06-16 13:01







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

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