试试下面这段代码,你就知道怎么回事了 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
to firechun 大哥,可能你没明白我的意思! 我之所以TMD百思不得其解,就是因为我没有犯你说的那种低级错误呀!!! 你再好好从头到尾看看!!!!!!!!!! 我没有你想的那么蠢哦!呵呵
to firechun shadowlee回复于2000-12-16 11:52:00 另:此变量只在公共部分用public声明过一次!绝对没有在其他过程重复声明过!你说怪不怪!!!
那么有办法将一个变量从内存中释放吗?
如果是全局的数组想改变大小可以用redim
是对象变量就如cocoboy79说的了
也不能用,所以我看你是不是搞错了,你把vb设为要求变量必须声明(使用前预先声明),可以避免这些问题。
比如在公共部分声明过public sqlstr as string后又在某个过程中声明dim sqlstr as string,在调用了这个过程后sqlstr就被重新声明啦!前面的就不算数了。
2、即使是全局变量,也没有必要考虑释放,因为他根本占不到多少内存,真正占内存的是OBJECT,控件和窗体,不要一次加载一些一时用不到的控件和窗体,使用完了后马上卸载才是个好方法;
3、如果真的要追查变量为什么TMD变"",可以跟踪变量调试。
你的第一和第二条建议绝对是我一直以来恪守的信条!!!
至于TMD莫名其妙变"",我跟踪N次啦!真TMD是百思不得其解呀!
你在过程当中重新声明后,在该过程中使用的STRSQL是过程变量,而不是那个全局变量的STRSQL,你在该过程中没有给STRSQL赋值,它当然是“”了。
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
大哥,可能你没明白我的意思!
我之所以TMD百思不得其解,就是因为我没有犯你说的那种低级错误呀!!!
你再好好从头到尾看看!!!!!!!!!!
我没有你想的那么蠢哦!呵呵
shadowlee回复于2000-12-16 11:52:00
另:此变量只在公共部分用public声明过一次!绝对没有在其他过程重复声明过!你说怪不怪!!!
如果你是在窗体的公共部分声明的,它只是模块级变量,在别的窗体使用时,要加上引用部分,如FORM1.STRSQL,不知道我这次理解对了没有?:)
不是我不明白,这世界变化快!!呵呵
对不起,忘了告诉你。我所指的公共部分不是指的窗体的公共部分,而是指的模块(module)的公共部分!
不知道是不是有关系呢
因此你可以把这个全局变量定义成变体型就可以 set x=nothing 了
不过我不明白你为什么要这么做!!!????这样结构很差!
你好!
能不能把你的程序简化一下,发布到网上,因为大家实在不明白你的问题到底出在那里(不过,可不是让你的程序泄密呵呵)