今天有同事问我,说全局变量怎么用,我很纳闷,怎么会问全局变量怎么用呢?他给我演示说,定义了一个全局变量,在全局函数里面对他赋值的时候,提示全局变量没定义。我过去一看,还真是。
pb是个很方便的编程工具,我们定义变量,一般都是在当前对象的declare variables tab页直接定义变量,这里可以很方便的定义全局变量,实例变量,共享变量,全局外部函数,本地外部函数。但是全局变量是供所有对象使用的,所以全局变量的定义肯定不会包含在当前对象中,虽然这里可以定义,但是pb会自动把定义的全局变量定义到application对象中,全局变量只有定义到application中,才能保证他的生命周期扩展都整个应用的运行过程中。
既然程序报全局变量没定义的错误,全局变量应该是没有被定义的,我到application声明变量的地方看了一下,真的没有定义。但是全局函数声明变量页却存在全局变量的定义。我把全局函数关闭后,再打开,发现先前保存好的全局变量定义没有了。
因为,pb编程一般都配合着vss使用,vss签出的pbl是可写的,未签出的pbl是只读的,同事刚好没有签出application对象所在的那个pbl。也就造成了applicaiton对象所在的pbl是只读的。当在全局函数里面定义全局变量的时候,虽然显示保存成功了,但是并没有保存到application中,所以就造成了文章开头的那一幕。