回 帖 发 新 帖 刷新版面

主题: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。。。。在所有模块中用语句说明的都是共享的


在实际的使用中大家如果有什么问题可以发贴来问我!
拒绝回答问书上题目的人!

回复列表 (共2个回复)

沙发

呵呵,请你试试数组的静动态共享如何实现?
(我每次弄明白之后隔一段时间就会忘掉的了)

板凳

赫赫,有名

我来回复

您尚未登录,请登录后再回复。点此登录或注册