标题:提示找不到变量b
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 40楼 cssnet
何来Dbase III代码的问题? 楼主提出的问题与Dbase III有什么关系?
算了吧,早就说你讲多错多,那有一句正经的话,全是问非所答。
Dbase III代码的问题,还不是你自己“重新发明”出来的新问题吗? 做人不能这样乱泼脏水哦。
2023-01-01 11:08
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
以下是引用吹水佬在2023-1-1 11:08:56的发言:

何来Dbase III代码的问题? 楼主提出的问题与Dbase III有什么关系?
算了吧,早就说你讲多错多,那有一句正经的话,全是问非所答。
Dbase III代码的问题,还不是你自己“重新发明”出来的新问题吗? 做人不能这样乱泼脏水哦。


很简单,我们在Dbase III年代,就是习惯这样子写代码的。
为了这个可怕的习惯,后来也不知付出了多少可怕的代价。
还有,你将这段代码拿到Dbase III中,是可以不作任何修改运行的。
楼主所遇的“B变量找不到”问题,说不定就能从Dbase III系统中给出。

2023-01-01 11:34
cssnet
Rank: 4
等 级:业余侠客
威 望:4
帖 子:317
专家分:203
注 册:2013-10-4
得分:0 
我们今天写任何函数,第一件事,会毫不犹豫地在开头写:
Local lcText, lnNum, loTree, laArray
然后再巴拉巴拉接着去写任何业务代码。
一句“Local”能解决的事,这就不叫事!
这是常识,这是傻瓜都会干的,纯肢体记忆,就如同穿衣吃饭一样地自然无异议无疑义,试问——
穿衣吃饭有啥好讨论的呢?——聪明的,我问你。
2023-01-01 11:50
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
以下是引用吹水佬在2022-12-30 10:56:31的发言:


DO...WITH...默认是传址,而PARAMETERS又是私有的。
是不是常量与变量的问题,常量通常是不变的,当常量地址 -> 变量地址时,又出现同一个变量地址 -> 另一个变量地址,此时会不会出现地址冲突出现异常?
测试:
WITH ... PARAMETERS
常量 ... 变量A
常量 ... 变量B   
正常

变量 ... 变量A
变量 ... 变量B   
正常

常量 ... 变量A
变量A... 变量B   
异常

斑竹说的没错,主要区别是 do sub with  c1,b1,c1 是传地址,与sub()不同,但与 sun(@c1,@b1,@c1)相同
大家口算一下,最后x1,a1,b1,c1是多少

CLEAR
x1=10
a1=2
b1=3
c1=5
DO sub WITH c1,b1,c1
?" x1=",x1," ,a1=",a1," ,b1=",b1," ,c1=",c1


PROCEDURE sub
PARAMETERS b1,a1,c1
b1=b1+1
a1=a1+2
RETURN
ENDPROC
2023-01-01 12:28
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
结果
x1=10 , a1=2 , b1=5 , c1= 6
是不是很奇怪,b1 不就是 b1+1=4吗,怎么会5,c1怎么会是6
因为上面的是传地址

PROCEDURE sub
PARAMETERS b1,a1,c1
b1=b1+1 && b1=5,b1+1=6,6->c1,所以c1=6
a1=a1+2 && a1=3,a1+2=5,5->b1,所以b1=5
RETURN
ENDPROC
2023-01-01 12:38
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
楼主的题目,估计考知识点的
1. do sub with 参数 ,与sub(参数),与sub(@参数) 区别
2. PARAMETERS 参数 ,与 LPARAMETERS 参数 ,的区别

只是出乌龙了,出题目者不知道“如吹斑竹说的,会导致 地址冲突。。。”
2023-01-01 12:51
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:5 
一件简单的事情,让大家讨论的如此热烈,好现象啊。

活到老,学到老! http://www. E-mail:hu-jj@
2023-01-01 13:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用cssnet在2023-1-1 11:50:06的发言:

我们今天写任何函数,第一件事,会毫不犹豫地在开头写:
Local lcText, lnNum, loTree, laArray
然后再巴拉巴拉接着去写任何业务代码。
一句“Local”能解决的事,这就不叫事!
这是常识,这是傻瓜都会干的,纯肢体记忆,就如同穿衣吃饭一样地自然无异议无疑义,试问——
穿衣吃饭有啥好讨论的呢?——聪明的,我问你。

是不是嘴硬的人头脑会单纯的呢? 有啥不好讨论的呢?
LOCAL也不是可以高枕无忧的,凡事要看实际情况,一般情况LOCAL不会有什么大问题。
我就不太习惯一开头就写LOCAL,通常是什么时候用到的变量就什么时候写,这样方便修改和尽量不出现错漏。
如果函数用了很多变量,记忆力有限,LOCAL也有可能错漏。
这种情况个人通常会用 PRIVATE ALL,这样就省心点。至于在函数里也要对上层某变量作出处理,可以使用LIKE|EXCEPT子项,也可通过传址方式参数送入函数。
2023-01-01 13:28
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用hu9jj在2023-1-1 13:10:25的发言:

一件简单的事情,让大家讨论的如此热烈,好现象啊。

一个喜欢吹水的人遇上一个“吹水佬”,局面就这这样子。
2023-01-01 14:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511021-1-1.html




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

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