以下是引用走路晃悠悠在2013-6-23 16:20:21的发言:
哦,在主文件main里定义变量就是对每个表单都有作用,而在表单里则是对某个表单有用是吗
关于
内存变量的作用域,其实说得仔细点是这样的:
(1)如果在某程序代码中没有任何定义,直接拿起来就赋值用,其作用域是该程序以及该程序调用的其它所有子程序(含表单)。该程序的上级程序和平级程序不能用。
(2)用LOCAL定义的内存变量,称为局部变量,仅在定义它的程序段中可用,其它上级、平级、下级程序都不可以用。
(3)用PRIVATE定义的内存变量,称为私有变量,作用域同(1),但可以定义与调用它的上级程序中的变量同名变量,但是各用的各的,属于两个不同变量。一旦PRIVATE定义的同名变量出了定义的程序段,再用这个名字的变量,就会是上级同名变量中的值。私有变量比较搞,不建议在系统中使用。
(4)用PUBLIC定义的内存变量,称为公共变量,不管其在哪个程序代码中定义,可用在整套系统的任何程序代码中。
(5)在表单的事件程序中定义或首次使用的内存变量,作用域仅限于该程序(LOCAL定义)或该程序及其调用的子程序(不定义或PRIVATE定义)。而不是象你说的,在表单里定义的变量对整个表单都有效。表单中的所有事件、方法程序的代码都是互相独立的,也就是说是平级关系,并不因为表单是其它控件的母体,就是上级。你可以验证一下:在表单的LOAD事件中来一句:AA=1。然后你在其它控件的任何事件中来一句:BB=AA,肯定会告诉你“找不到变量AA”。
最后,说一下:为什么强调是“内存变量”,因为变量还有字段变量,也就是表文件的字段。字段变量没有作用域的问题,只要其所属的表文件打开着,就能应用于任何程序代码中。
[
本帖最后由 taifu945 于 2013-6-23 18:43 编辑 ]