注册 登录
编程论坛 VFP论坛

提示找不到变量b

BIANCHENGLYS 发布于 2022-12-29 21:37, 3089 次点击
CLEAR
X=10
A=2
B=3
DO SUB WITH 1,B
?X,A,B
PROCEDURE SUB
PARAMETERS B,A
?B,A
B=B+1
A=A+2
RETURN
48 回复
#2
吹水佬2022-12-29 22:37
CLEAR
X=10
A=2
B=3
SUB(1,B)
?X,A,B

PROCEDURE SUB
PARAMETERS B,A
  ?B,A
  B=B+1
  A=A+2
  RETURN
ENDPROC



CLEAR
X=10
A=2
B=3
DO SUB WITH 1,B
?X,A,B

PROCEDURE SUB
LPARAMETERS B,A
  ?B,A
  B=B+1
  A=A+2
  RETURN
ENDPROC

[此贴子已经被作者于2022-12-29 22:42编辑过]

#3
BIANCHENGLYS2022-12-30 09:15
回复 2楼 吹水佬
您好,我的代码为什么会提示“找不到变量B”呢
#4
吹水佬2022-12-30 10:56
以下是引用BIANCHENGLYS在2022-12-30 09:15:01的发言:

您好,我的代码为什么会提示“找不到变量B”呢

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

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

常量 ... 变量A
变量A... 变量B   
异常
#5
laowan0012022-12-30 11:21
执行楼主的程序没出现找不变量b的错误,显示结果也是正确的
建议:本地变量使用local定义,这样不会与后续程序的同名变量冲突或值异常
如果希望子程序改变本地变量的值,可以在传参数时使用@b这样的格式
#6
cssnet2022-12-30 11:36
讲真,我一向都打醒十三、四、五、六分精神,竭力避免子程序变量与主程序同名,以免无意中修改到上层的变量值,造成不必要麻烦……想不到骨骼清奇的楼主,竟然会唯恐天下不乱?!
呵呵。林子大了。
#7
laowan0012022-12-30 14:16
以下是引用cssnet在2022-12-30 11:36:48的发言:

讲真,我一向都打醒十三、四、五、六分精神,竭力避免子程序变量与主程序同名,以免无意中修改到上层的变量值,造成不必要麻烦……想不到骨骼清奇的楼主,竟然会唯恐天下不乱?!
呵呵。林子大了。

习惯了用local,那就不怕了
#8
BIANCHENGLYS2022-12-30 15:36
回复 5楼 laowan001
谢谢,这是我遇到的一道题。
#9
BIANCHENGLYS2022-12-30 15:42
回复 6楼 cssnet
CLEAR
X=10
A=2
B=3
DO SUB WITH 1,B
?X,A,B
PROCEDURE SUB
PARAMETERS B,A
B=B+1
A=A+2
RETURN
这是一道分析结果题,按以往掌握的知识,结果应该是10  2    5,执行结果却是找不到变量,不是我编的代码。
#10
BIANCHENGLYS2022-12-30 15:45
回复 4楼 吹水佬
谢谢
#11
吹水佬2022-12-30 16:50
DO...WITH 与 PARAMETERS 有点意思
这个看看
CLEAR
B=3
DO SUB WITH 11,B
?B

PROCEDURE SUB
  PARAMETERS B,XX
RETURN

这个常数是什么,B就是什么

[此贴子已经被作者于2022-12-30 16:54编辑过]

#12
laowan0012022-12-30 17:04
此B非彼B也
#13
吹水佬2022-12-30 17:07
以下是引用laowan001在2022-12-30 17:04:05的发言:

此B非彼B也

问题是这两个B是对应的,不能少,也不能变
DO SUB WITH 11,B
PARAMETERS B,XX
可见WITH的 11,B 与 PARAMETERS的 B 三者是有关系的。

[此贴子已经被作者于2022-12-30 17:09编辑过]

#14
cssnet2022-12-30 22:57
我震惊于诸位大侠得闲得咁交关,居然能够一本正经地探讨“有歧义性代码的副作用”——如此这般一个聪明人避之唯恐不及的Bug影重重的稀奇古怪问题……

#15
吹水佬2022-12-31 08:34
以下是引用cssnet在2022-12-30 22:57:39的发言:

我震惊于诸位大侠得闲得咁交关,居然能够一本正经地探讨“有歧义性代码的副作用”——如此这般一个聪明人避之唯恐不及的Bug影重重的稀奇古怪问题……

这样回复问题,对提出问题的人有帮助吗? 编程不是闲谈说笑话。
BUG又如何,不知道不足,又何来进步?

从底层点看,传址就是传数据的内存地址,这个地址是唯一的。
只想了解一下解释语言当相同的变量名出现表达不同的地址时会出现什么问题。
还有,不同的编译器对参数传递的顺序也有不同(从右到左、从左到右),会有不同的结果。
真要搞清楚,还是要看机器码,有兴趣可以去看看,肯定会明白问题所在。

顺便说说,不要动不动就说这是BUG、那是BUG。
试问题那个应用程序敢说自己无BUG,不会因为有BUG就避之则吉。
BUG是不足,做人要勇敢面对BUG,勇于去发现BUG,避BUG改BUG才是万事大吉。




#16
吹水佬2022-12-31 08:50
以下是引用cssnet在2022-12-30 11:36:48的发言:

讲真,我一向都打醒十三、四、五、六分精神,竭力避免子程序变量与主程序同名,以免无意中修改到上层的变量值,造成不必要麻烦……想不到骨骼清奇的楼主,竟然会唯恐天下不乱?!
呵呵。林子大了。

在VFP白活了几十年,这样做不是不好,只是要费点劲。
一个上层有可能会调用好多个下层,一个下层也有可能会被多个上层调用。
记性要好,记不住还要要出问题,要做个变量名表来查对吗?
VFP本来就有规范这类行为:
    PUBLIC
    LOCAL
    PRIVATE
#17
laowan0012022-12-31 10:52
以下是引用吹水佬在2022-12-30 17:07:02的发言:


问题是这两个B是对应的,不能少,也不能变
DO SUB WITH 11,B
PARAMETERS B,XX
可见WITH的 11,B 与 PARAMETERS的 B 三者是有关系的。

按逻辑说,do sub with 中的11对应传给parameters 的B,do sub with 中的B对应传给parameters的XX
我现在基本只用function了,如果想改变本地变量的值,则按地址传递参数(@参数),这样也很方便
#18
laowan0012022-12-31 11:06
以下是引用吹水佬在2022-12-30 16:50:38的发言:

DO...WITH 与 PARAMETERS 有点意思
这个看看
CLEAR
B=3
DO SUB WITH 11,B
?B

PROCEDURE SUB
  PARAMETERS B,XX
RETURN

这个常数是什么,B就是什么

执行结果:3
如果sub中加一句:xx = xx + 1,则执行结果为4
#19
laowan0012022-12-31 11:08
还是回归正道吧,每个程序管好自己的变量,这样会减少很多烦恼
#20
吹水佬2022-12-31 11:09
以下是引用laowan001在2022-12-31 10:52:56的发言:


按逻辑说,do sub with 中的11对应传给parameters 的B,do sub with 中的B对应传给parameters的XX
我现在基本只用function了,如果想改变本地变量的值,则按地址传递参数(@参数),这样也很方便

不只是对应传送问题,对调一下也是对应的,但结果就不一样,传送顺序也有问题。
DO SUB WITH B,11
PARAMETERS XX,B
关键点可能是这个“常数”地址问题,变数怎样变也没问题。
#21
吹水佬2022-12-31 11:17
以下是引用laowan001在2022-12-31 11:06:30的发言:


执行结果:3
如果sub中加一句:xx = xx + 1,则执行结果为4

你的结果应该是对的。楼主的代码应该也没问题。
你的VFP环境可能不同。
#22
cssnet2022-12-31 11:39
写无歧义的代码,写容易理解的代码,写无逻辑问题的代码,我觉得这是写代码者的最基本的修养与素质。
你写出来的代码,若有任何歧义,有任何不清不楚之处,那你就自己手动改到清清楚楚,改到无疑义,让人一看即知为优雅的代码——这是任何一位写代码者的义务,请注意,这不是权利,而是义务。
呵呵。我觉得,花时间在不清不楚的无聊代码上,那真心是很无聊的精力浪费与时间浪费。
因正常情况下,一般人不可能故意写出那样子的代码。
若真遇上了,那就是写的人的问题,而不是看的人的问题——谁写的谁负责改,请注意,这不是权利,而是义务!
#23
吹水佬2022-12-31 11:48
回复 22楼 cssnet
什么“歧义”,不要乱扣帽子。
试问那句代码书写不合法?
同一代码在不同运行环境结果不同也不出奇,关键是要把问题搞清楚,不是用一句“歧义”就可以含糊过去。这是态度问题、责任问题。
#24
cssnet2022-12-31 12:04
变量“B”,若既有可能是实参,又有可能是形参,既有可能来自主程序,又有可能出自子程序——这就叫“歧义”。
不接受申诉。
呵呵。

若一段代码可能引发歧义,那么写的人就有问题了。
这里必须敲几下小黑板:
请写代码的人拿回去重写。请修改为不再引发歧义的版本交上来。
不接受申诉。

顺便说一句:
我鄙视以x、y、b……随意命名单字母变量的习惯。发自内心地。
不接受申诉。
#25
吹水佬2022-12-31 12:06
以下是引用cssnet在2022-12-31 11:39:20的发言:

写无歧义的代码,写容易理解的代码,写无逻辑问题的代码,我觉得这是写代码者的最基本的修养与素质。
你写出来的代码,若有任何歧义,有任何不清不楚之处,那你就自己手动改到清清楚楚,改到无疑义,让人一看即知为优雅的代码——这是任何一位写代码者的义务,请注意,这不是权利,而是义务。
呵呵。我觉得,花时间在不清不楚的无聊代码上,那真心是很无聊的精力浪费与时间浪费。
因正常情况下,一般人不可能故意写出那样子的代码。
若真遇上了,那就是写的人的问题,而不是看的人的问题——谁写的谁负责改,请注意,这不是权利,而是义务!

与问题无关的话还是少说吧,闲话说多错多。
我一开始不就是按你说的做了吗? 看看2楼,来论坛就要认真点交流,不要当人家是透明的。
认真点,先看看楼主9楼对你的回复:“这是一道分析结果题......不是我编的代码。”,你认真回应了吗?
我也只是为回应分析“分析结果题”再精简些,没有重新发明什么代码吧? 没有改变楼主问题的原意吧?
#26
吹水佬2022-12-31 12:10
以下是引用cssnet在2022-12-31 12:04:31的发言:
顺便说一句:
我鄙视以x、y、b……随意命名单字母变量的习惯。发自内心地。
不接受申诉。

讨论问题力求精简,作为示例如此 x、y、b 没什么问题,何来鄙视之?
我贴的示例代码不少,都是力求精简至极,严谨的从来没有。只要能说清楚问题就OK。
#27
cssnet2022-12-31 12:41
为严谨计,我查了一下《全国计算机等级考试》一至四级的考试科目……没查到什么VFP科目。
若没记错的话,我老人家小时候的二级考有VFP;及至后来VFP死掉好多年之后,理论上,应该已被等级考剔除出局了。
虽说我老人家不太清楚,都2023年了,所谓“VFP试题”还有什么用,可能“存在即合理”吧——既然有人出题,有人做题,那么VFP的棺材板,理论上,仍未扣得十分密实;间唔中,诈一诈尸,还一还魂,仍是会有一点点机会的。

#28
吹水佬2022-12-31 13:26
以下是引用cssnet在2022-12-31 12:41:34的发言:

为严谨计,我查了一下《全国计算机等级考试》一至四级的考试科目……没查到什么VFP科目。
若没记错的话,我老人家小时候的二级考有VFP;及至后来VFP死掉好多年之后,理论上,应该已被等级考剔除出局了。
虽说我老人家不太清楚,都2023年了,所谓“VFP试题”还有什么用,可能“存在即合理”吧——既然有人出题,有人做题,那么VFP的棺材板,理论上,仍未扣得十分密实;间唔中,诈一诈尸,还一还魂,仍是会有一点点机会的。

话语逻辑上有问题。
出题的也不是为《全国计算机等级考试》而出的吧?
试问《全国计算机等级考试》除了VFP没有外,还有什么没能有编程语言? 那么没有的是不是就没有试题的存在? 是不是都在“间唔中,诈一诈尸,还一还魂”?
#29
吹水佬2022-12-31 14:59
以下是引用cssnet在2022-12-31 12:04:31的发言:

变量“B”,若既有可能是实参,又有可能是形参,既有可能来自主程序,又有可能出自子程序——这就叫“歧义”。
不接受申诉。
呵呵。

若一段代码可能引发歧义,那么写的人就有问题了。
这里必须敲几下小黑板:
请写代码的人拿回去重写。请修改为不再引发歧义的版本交上来。
不接受申诉。


我就不认为代码有“歧义”的问题,有兴趣可以多点测试。
所谓“歧义”是指不确定性,也就是通常说的“未定义”行为。
具体点说,这段代码编译后,连带编译时用的运行库,在其他相同的平台运行环境中运行出现不同的结果,这就是存在所谓“歧义”,存在不确定性。
“歧义”是客观存在的,是有时空的、有条件的、有限制的。尤其是编译器,代码要保持在不同的编译器不产生“歧义”是件难事。
#30
cssnet2022-12-31 15:22
如果VFP仍是《全国计算机等级考试》的二级考试科目,那么,它仍至少具备某种狭义上的“学生分数意义上的理论编程语言”。
而倘若VFP连“学生分数意义上的理论编程语言”这一起码理由也不复存在的话,那么,2007年经官方的、权威的、毫无歧义的、盖棺定论的宣告,已正式终结的VFP,在经过了漫长的15年岁月后,偶尔见上她一面,我说VFP“诈尸”与“还魂”——就严格意义而言——我的说法其实并无任何不妥,且我的说法也颇为客观、理性与准确。

若是不为考级,试问,你练甚么考题?——都混吉嘅!
#31
吹水佬2022-12-31 15:54
以下是引用cssnet在2022-12-31 15:22:17的发言:

如果VFP仍是《全国计算机等级考试》的二级考试科目,那么,它仍至少具备某种狭义上的“学生分数意义上的理论编程语言”。
而倘若VFP连“学生分数意义上的理论编程语言”这一起码理由也不复存在的话,那么,2007年经官方的、权威的、毫无歧义的、盖棺定论的宣告,已正式终结的VFP,在经过了漫长的15年岁月后,偶尔见上她一面,我说VFP“诈尸”与“还魂”——就严格意义而言——我的说法其实并无任何不妥,且我的说法也颇为客观、理性与准确。

若是不为考级,试问,你练甚么考题?——都混吉嘅!

还不是又拿编程语言说事嘛,其实那门编程语言不都是一样的吗? 还不是用来表达人的思想与电脑的沟通吗,只是不同的编程语言的表达方式与表达能力有所区别而已。
VFP是优秀的编程环境、优秀的编程语言。在VFP学到的编程知识和编程思想是不会因VFP的终结而消失的,就算不用VFP而用其他编程语言,也只是换了个表达方式,VFP的精神还是会继续发扬的。如果因VFP的终结而感觉到什么都完了,那就算你白活了。
#32
吹水佬2022-12-31 16:27
就借cssnet的CSS说说,NET就不用说了。
在VFP不是经常提到B/S的问题,用VFP来理解B/S也不是什么难的事。
CSS就当是VFP的属性设计器
JS就当是VFP的方法事件设计器
HTML就当是VFP的控件设计器
这样看就好理解了吧,有VFP的基础做B/S不会难的。
编程语言大体是差不多的,基本语法也差不多,不要把编程语言孤立化,更加不要对立化,要融汇贯通。
#33
laowan0012022-12-31 16:33
有点跑题了啊
#34
吹水佬2022-12-31 16:43
以下是引用laowan001在2022-12-31 16:33:32的发言:

有点跑题了啊

不好意思,水吹多了。
#35
cssnet2022-12-31 17:04
“优秀”和“过时/淘汰”,这在逻辑上,是两个没多少关联的概念,不要混淆到一起来谈论。
就好比,我说“木牛流马是一种优秀的东西”,这与我说,“木牛流马是一种过时的、被淘汰的东西”,二者之间,没有矛盾,两句话都对。
并不存在说,“木牛流马过时、被淘汰”,那么“木牛流马就不优秀”;
或者,“木牛流马优秀”,那么“木牛流马就不过时、被淘汰”。
木牛流马可以是既优秀,同时又过时且被淘汰。

事关,据考证,“木牛流马”可能是“独轮车”一类东西。
现代战场若再推这种优秀的玩意儿出来混,有可能会成建制地送命。

好吧,现在请将“木牛流马”换成“VFP”,同学们,再将上边几句话完整地读一遍。

#36
吹水佬2022-12-31 17:30
以下是引用cssnet在2022-12-31 17:04:11的发言:

“优秀”和“过时/淘汰”,这在逻辑上,是两个没多少关联的概念,不要混淆到一起来谈论。
就好比,我说“木牛流马是一种优秀的东西”,这与我说,“木牛流马是一种过时的、被淘汰的东西”,二者之间,没有矛盾,两句话都对。
并不存在说,“木牛流马过时、被淘汰”,那么“木牛流马就不优秀”;
或者,“木牛流马优秀”,那么“木牛流马就不过时、被淘汰”。
木牛流马可以是既优秀,同时又过时且被淘汰。

事关,据考证,“木牛流马”可能是“独轮车”一类东西。
现代战场若再推这种优秀的玩意儿出来混,有可能会成建制地送命。

好吧,现在请将“木牛流马”换成“VFP”,同学们,再将上边几句话完整地读一遍。

“木牛流马”与“VFP”有可比性吗? 类比不是这样用的嘛。
用静止的、固化的、孤立的思想来分析问题是不客观的。事物的发展,过时、淘汰是相对的,量变->质变、质变->量变,是事物发展的过程,并不是说事物的消亡或终结,物质不灭是定律。
按你这样说,思想灵魂是不存在的、马克思思想是不存在的、毛泽东思想是不存在的..........。
#37
cssnet2022-12-31 17:56
之所以特意抽取出“优秀”与“过时/淘汰”来说事,缘于顶楼的代码,是一种很过时的、被淘汰的代码。
讲真,我确实没任何耐心细看那种Dbase III风格的代码——看一次恐怕要洗几次眼,才能补得回数。
若是顶楼代码出现了:
@3, 5 say "Hello world!"
我一点都不觉意外,只会轻轻说一句:
“很遗憾,尊敬的阁下,你真的过时/淘汰了。”
看到一班同学热火朝天地讨论一种很过时的、被淘汰的代码风格,且一本正经地提出“建设性意见”,只觉时光倒流——要么,我穿越回了Dbase III年代,要么,一班麻勒佬得闲到抽筋,不知究竟在搞什么飞机!

#38
吹水佬2022-12-31 19:07
以下是引用cssnet在2022-12-31 17:56:50的发言:

之所以特意抽取出“优秀”与“过时/淘汰”来说事,缘于顶楼的代码,是一种很过时的、被淘汰的代码。
讲真,我确实没任何耐心细看那种Dbase III风格的代码——看一次恐怕要洗几次眼,才能补得回数。
若是顶楼代码出现了:
@3, 5 say "Hello world!"
我一点都不觉意外,只会轻轻说一句:
“很遗憾,尊敬的阁下,你真的过时/淘汰了。”
看到一班同学热火朝天地讨论一种很过时的、被淘汰的代码风格,且一本正经地提出“建设性意见”,只觉时光倒流——要么,我穿越回了Dbase III年代,要么,一班麻勒佬得闲到抽筋,不知究竟在搞什么飞机!

人家有问题提出,既然参与进来就不要回避,要正面面对、指正、说服。不能去挖苦、挑刺、讥讽,不断“重新发明”问题,非要搞到人家无所适从而后快。
#39
laowan0012022-12-31 20:25
既然如此不齿于如此“过时/淘汰”的古董,何必还在这里废眼睛呢。参与这些人的讨论,不也是在一起“搞飞机”吗
楼主有不明白的问题希望听到大家的意见,大家也根据自己的见解回复,这本是论坛的一个作用
谁都有不明白的地方,初学时难免让人贻笑大方,这也是成长的必由之路,何必那样对待呢?
一个老司机嘲笑新手的时候大概是忘记自己也是从新手过来的了
#40
cssnet2023-01-01 10:31
之所以出言“嘲讽、讥讽、不齿”这种Dbase III风格的代码,实在是因为,这种Dbase III风格代码不值得讨论。
即使你们讨论分析出一个子丑寅卯来,它也不会对今天写的任何代码,带来任何实质性有用的帮助。

这就好比,在VB6或者的论坛,你去请教人家探讨Qbasic的代码,一样无趣、无聊、无益。
印象中,Dos 6.22还是Dos 3.33,有个简化版的Qbasic.exe,只能运行.BAS程序,不过不能编译;还随机附赠了一个“贪吃蛇”的QBasic的源代码。我读过,感觉写得挺巧妙,当中好像仍存有几点疑问,看不太明白,想贴上来,请教一下VB大拿们,不知能否不吝指教为盼?
——傻瓜都知道,这种请教,是很不合时宜、很不妥的,浪费论坛资源,且浪费一众今天程序员的时间与口水。
毕竟那是Qbasic代码,跟Visual Basic相比,虽说都是Basic,可真的已经过时、淘汰了,不值得讨论了。
现在的Dbase III代码也一样,真的真的已经过时、淘汰了,不值得讨论了。
#41
吹水佬2023-01-01 11:08
回复 40楼 cssnet
何来Dbase III代码的问题? 楼主提出的问题与Dbase III有什么关系?
算了吧,早就说你讲多错多,那有一句正经的话,全是问非所答。
Dbase III代码的问题,还不是你自己“重新发明”出来的新问题吗? 做人不能这样乱泼脏水哦。
#42
cssnet2023-01-01 11:34
以下是引用吹水佬在2023-1-1 11:08:56的发言:

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


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

#43
cssnet2023-01-01 11:50
我们今天写任何函数,第一件事,会毫不犹豫地在开头写:
Local lcText, lnNum, loTree, laArray
然后再巴拉巴拉接着去写任何业务代码。
一句“Local”能解决的事,这就不叫事!
这是常识,这是傻瓜都会干的,纯肢体记忆,就如同穿衣吃饭一样地自然无异议无疑义,试问——
穿衣吃饭有啥好讨论的呢?——聪明的,我问你。
#44
mywisdom882023-01-01 12:28
以下是引用吹水佬在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
#45
mywisdom882023-01-01 12:38
结果
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
#46
mywisdom882023-01-01 12:51
楼主的题目,估计考知识点的
1. do sub with 参数 ,与sub(参数),与sub(@参数) 区别
2. PARAMETERS 参数 ,与 LPARAMETERS 参数 ,的区别

只是出乌龙了,出题目者不知道“如吹斑竹说的,会导致 地址冲突。。。”
#47
hu9jj2023-01-01 13:10
一件简单的事情,让大家讨论的如此热烈,好现象啊。
#48
吹水佬2023-01-01 13:28
以下是引用cssnet在2023-1-1 11:50:06的发言:

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

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

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

一个喜欢吹水的人遇上一个“吹水佬”,局面就这这样子。
1