SET=NOTHING指的是释放对象变量,不是数值变量
dim abc as myobject
set abc=new myobject
...
....
.
set abc=nothing

解决方案 »

  1.   

    to cocoboy79
    那么有办法将一个变量从内存中释放吗?
      

  2.   

    变量为何要释放,你定义为局部变量(在子程序内)即可
    如果是全局的数组想改变大小可以用redim
    是对象变量就如cocoboy79说的了
      

  3.   

    因为有个变量(字符串型的)整个工程都要TMD用到!后来发现很多BUG都和这个变量有关系,而且明明是全局变量,可是调用完一个过程后就TMD莫名其妙变为""啦,只好重载!所以干脆每次用完它就把它释放掉,一了百了!
      

  4.   

    另:此变量只在公共部分用public声明过一次!绝对没有在其他过程重复声明过!你说怪不怪!!!
      

  5.   

    全局变量只能在模块里声明,在窗体里声明的即使是public,别的模块
    也不能用,所以我看你是不是搞错了,你把vb设为要求变量必须声明(使用前预先声明),可以避免这些问题。
      

  6.   

    我的意思指是在再公共部分声明之后,又在过程中重复声明的情况!
    比如在公共部分声明过public sqlstr as string后又在某个过程中声明dim sqlstr as string,在调用了这个过程后sqlstr就被重新声明啦!前面的就不算数了。
      

  7.   

    1、我建议你不要再次声明已经声明过的全局变量,这是个良好的习惯,可以避免你的许多问题;
    2、即使是全局变量,也没有必要考虑释放,因为他根本占不到多少内存,真正占内存的是OBJECT,控件和窗体,不要一次加载一些一时用不到的控件和窗体,使用完了后马上卸载才是个好方法;
    3、如果真的要追查变量为什么TMD变"",可以跟踪变量调试。
      

  8.   

    to dongdong
    你的第一和第二条建议绝对是我一直以来恪守的信条!!!
    至于TMD莫名其妙变"",我跟踪N次啦!真TMD是百思不得其解呀!
      

  9.   

    尽量少用全局变量,如果一个变量在几个模块中都要用到,可以分别在每个模块中定义模块级变量,然后在模块中进行值的传递。
    你在过程当中重新声明后,在该过程中使用的STRSQL是过程变量,而不是那个全局变量的STRSQL,你在该过程中没有给STRSQL赋值,它当然是“”了。
      

  10.   

    试试下面这段代码,你就知道怎么回事了
    Option ExplicitPrivate strSql          As StringPrivate Sub Command1_Click()
        Dim strSql          As String
        MsgBox strSql
    End SubPrivate Sub Command2_Click()
        MsgBox strSql
    End SubPrivate Sub Form_Load()
        strSql = "AAAAAAAAAAAA"
    End Sub
      

  11.   

    to  firechun
    大哥,可能你没明白我的意思!
    我之所以TMD百思不得其解,就是因为我没有犯你说的那种低级错误呀!!!
    你再好好从头到尾看看!!!!!!!!!!
    我没有你想的那么蠢哦!呵呵
      

  12.   

    to firechun
    shadowlee回复于2000-12-16 11:52:00   
    另:此变量只在公共部分用public声明过一次!绝对没有在其他过程重复声明过!你说怪不怪!!!  
      

  13.   

    呵呵,还是没有明白
    如果你是在窗体的公共部分声明的,它只是模块级变量,在别的窗体使用时,要加上引用部分,如FORM1.STRSQL,不知道我这次理解对了没有?:)
      

  14.   

    to firechun
    不是我不明白,这世界变化快!!呵呵
    对不起,忘了告诉你。我所指的公共部分不是指的窗体的公共部分,而是指的模块(module)的公共部分!
    不知道是不是有关系呢
      

  15.   

     首先告诉你在VB中只有变体型变量和对象型变量才能手动卸载
    因此你可以把这个全局变量定义成变体型就可以 set x=nothing 了
    不过我不明白你为什么要这么做!!!????这样结构很差!
      

  16.   

    to firechun
    你好!
    能不能把你的程序简化一下,发布到网上,因为大家实在不明白你的问题到底出在那里(不过,可不是让你的程序泄密呵呵)