主题:QB中模块化编程的变量共享
我先来说说什么是模块
有些人以为qbasic中的子程序过程就是模块,当然,这么理解也可以
实际上简单的说,一个模块就是一个bas文件。一个功能的集合,比如我用QB做的硬盘工具(原程序在火客)中的mouse.bas这个可以单独用,但是它同时也是一个模块,是实现鼠标功能的模块,这样在共同开发的时候就不必来做着重复的劳动,而且在调试的时候也很方便,使得编程简单化,调用模块的方法请看我在火客发的模块化编程的帖子。
在模块化编程中,很现实的一个问题就是变量的共享.变量共享的几种方法
1. 用子程序后面带参数,这个大家经常用. 比如 SUB DEMO (D1,D2,D3)
2. 局部的变量保留
3. 一个模块内部的子程序与子程序之间的变量共享
4. 一个模块内所有变量共享
5. 所有模块的变量共享
下面我详细的用程序来说明他们的用法
第一个不说了
2.局部变量的保留
说明:正常时候,一个过程结束后变量就没有了,再次进入的时候所有变量都是0
有时候我们退出过程后希望变量的直能够保存下来
用STATIC语句可以保留本子程序中的变量
例如:下面我们要保留D1的直,可以这样
FOR I=1 TO 5
DEMO
NEXT I
SUB DEMO
STATIC D1
D1=D1+1
PRINT D1
END SUB
这样在退出这个过程的时候D1的直会保留
这些个都是局部变量的保留
3. 一个模块内部的子程序与子程序之间的变量共享
在几个要共享变量的子程序 中,用SHARED语句来说明要共享的变量
比如,下面两个子程序要共享D1
SUB DEMO1
SHARED D1
D1=8
END SUB
SUB DEMO2
SHARED D1
PRINT D1
END
这样在DEMO2中可以得到D1的直!
这个是在两个过程中的变量共享
4. 一个模块内所有变量共享
在主程序中用DIM SHARED D1,D2。。。。。。。。来说明要共享的变量
这个D1。D2。。。。在本模块中的所有过程都是共享的,而且在子程序中无须任何说明!
5. 所有模块的变量共享
在主模块中用DIM SHARED D1,D2。。。。。。。。来说明要共享的变量
在要共享变量的模块中也要用DIM SHARED D1,D2。。。。。。。。来说明要共享的变量
这个D1。D2。。。。在所有模块中用语句说明的都是共享的
在实际的使用中大家如果有什么问题可以发贴来问我!
拒绝回答问书上题目的人!
有些人以为qbasic中的子程序过程就是模块,当然,这么理解也可以
实际上简单的说,一个模块就是一个bas文件。一个功能的集合,比如我用QB做的硬盘工具(原程序在火客)中的mouse.bas这个可以单独用,但是它同时也是一个模块,是实现鼠标功能的模块,这样在共同开发的时候就不必来做着重复的劳动,而且在调试的时候也很方便,使得编程简单化,调用模块的方法请看我在火客发的模块化编程的帖子。
在模块化编程中,很现实的一个问题就是变量的共享.变量共享的几种方法
1. 用子程序后面带参数,这个大家经常用. 比如 SUB DEMO (D1,D2,D3)
2. 局部的变量保留
3. 一个模块内部的子程序与子程序之间的变量共享
4. 一个模块内所有变量共享
5. 所有模块的变量共享
下面我详细的用程序来说明他们的用法
第一个不说了
2.局部变量的保留
说明:正常时候,一个过程结束后变量就没有了,再次进入的时候所有变量都是0
有时候我们退出过程后希望变量的直能够保存下来
用STATIC语句可以保留本子程序中的变量
例如:下面我们要保留D1的直,可以这样
FOR I=1 TO 5
DEMO
NEXT I
SUB DEMO
STATIC D1
D1=D1+1
PRINT D1
END SUB
这样在退出这个过程的时候D1的直会保留
这些个都是局部变量的保留
3. 一个模块内部的子程序与子程序之间的变量共享
在几个要共享变量的子程序 中,用SHARED语句来说明要共享的变量
比如,下面两个子程序要共享D1
SUB DEMO1
SHARED D1
D1=8
END SUB
SUB DEMO2
SHARED D1
PRINT D1
END
这样在DEMO2中可以得到D1的直!
这个是在两个过程中的变量共享
4. 一个模块内所有变量共享
在主程序中用DIM SHARED D1,D2。。。。。。。。来说明要共享的变量
这个D1。D2。。。。在本模块中的所有过程都是共享的,而且在子程序中无须任何说明!
5. 所有模块的变量共享
在主模块中用DIM SHARED D1,D2。。。。。。。。来说明要共享的变量
在要共享变量的模块中也要用DIM SHARED D1,D2。。。。。。。。来说明要共享的变量
这个D1。D2。。。。在所有模块中用语句说明的都是共享的
在实际的使用中大家如果有什么问题可以发贴来问我!
拒绝回答问书上题目的人!