pb 中global variables,shared variables,instance variables,global external variables等变量的作用pb中变量的作用域都是什么?比如同一个global variables 变量可以用于两个不同的窗口,或两个不同的应用吗?在一个窗

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 12:53:40

pb 中global variables,shared variables,instance variables,global external variables等变量的作用
pb中变量的作用域都是什么?比如同一个global variables 变量可以用于两个不同的窗口,或两个不同的应用吗?在一个窗口里定义了全局变量,在其他窗口还用定义吗?

(1)全局变量可以在应用程序的任何地方访问,独立于其他任何的PowerBuilder对象.全局变量没有存取权限修饰,只能是public类型的.
(2)实例变量是属于对象的,和对象相关联,对象打开时,实例变量才创建,对象关闭时,实例变量也就消失了.不是所有的PowerBuilder对象都可以拥有实例变量,应用对象、窗口、用户对象和菜单可以拥有实例变量,在这些对象以及它们的控件中可以访问实例变量,也可以在定义实例变量时指定访问权限.
(3)共享变量不属于对象的实例,属于对象的定义.每个对象实例对变量的修改都影响该变量在其他该对象实例中的取值.和实例变量一样,只有应用对象、窗口、用户对象或者菜单可以拥有共享变量,在这些对象及它们的控件中可以访问该变量.和实例变量相比较,它们有以下的区别:
􀀠 同一对象的多个实例中,实例变量互不影响,共享变量互相影响;
􀀠 共享变量只有private存取权限,并且在声明时不能使用存取权限;实例变量可以有多种存取权限,并且声明时可以使用存取权限;
􀀠 某对象打开时,实例变量重新取初始值,共享变量仍然保留上次关闭时的取值.利用共享变量的这一特性,可以保存同一窗口的不同创建操作之间的信息.例如,有一个弹出式窗口显示另一个窗口的某些状态信息.在该弹出式窗口的open事件中,将该窗口的X和Y属性设置为两个共享变量的值,在弹出式窗口的close事件中,将该窗口当前的X和Y属性保存到这些变量中.一旦用户初始化了某个起点位置的共享变量,该窗口将记住它最后一次位于何处来维持应用程序的运行.用户应该记住,由共享变量使用的内存将保留到应用程序关闭为止,所以应该仔细考虑使用它们的方式.
(4)本地变量的作用范围是声明该变量的脚本范围内,出了定义,它的脚本就不能访问了.它是临时的变量,当脚本执行时为这些变量分配内存空间,脚本执行完毕,这些变量就不存在了.本地变量没有权限修饰.可以在脚本的任何位置定义本地变量,像判断语句if…then中、条件语句choose case中等都可以,一般都是在脚本的开始定义,除非开发人员可以肯定要声明的变量只在脚本的某块内使用.
另外,这四种作用域的变量的访问顺序是:本地变量、共享变量、全局变量、实例变量,一旦搜索到就不再继续搜索.例如,假设定义了同名的全局变量和实例变量test_str,在脚本中访问变量test_str时,实际上是访问的全局的test_str,PowerBuilder在全局变量中找到test_str后就不在继续搜索.当存在同名而不同作用域的变量,而又想访问搜索顺序靠后的变量时,可以使用一些修饰符来访问.全局变量的修饰符是两个连写的冒号“::”,实例变量是变量所属实例的名称,共享变量是变量所属定义的名称,本地变量不使用任何修饰符.例如,假设定义了四个同名不同作用域的变量test_str,::test_str可以访问全局变量w_main.test_str
当然,通过匈牙利命名法可以避免这种情况.因为不同作用的变量可以添加不同的前缀,从而保证不会有重名的变量.
实例变量是在整个窗口内有效,当窗口关闭后,它也随之消失.
共享变量也是在整个窗口内有效,当窗口关闭后,它仍然保留,当下次这个窗口再打开时,此变量继续上次的值来使用.
当你定义了一个global variables 变量 那所有的窗口都可以使用!不同的应用 你可以定义相同名称的global variables 应为它都不在一个应用中.
至于global external variables它没有吧我用的是pb11.5没有这种变量!
在一个窗口里定义了全局变量,在其他窗口还用定义吗?
答 :不用了