VB中,如何做到关闭程序后变量的值仍然保留?

例如:已经声明了一个Integer型的变量a,每次打开后a的值都会增加1,并把它打印到窗体上,这样的程序怎么编写?代码最好有注释,我的基础不好。如果能直接回答标题中的问题... 例如:已经声明了一个Integer型的变量a,每次打开后a的值都会增加1,并把它打印到窗体上,这样的程序怎么编写?代码最好有注释,我的基础不好。 如果能直接回答标题中的问题更好,谢谢! 展开
 我来答
匿名用户
2013-05-31
展开全部
回答者:百度HI群&飞度编程学社1195277'这个可以在每次Form_Main中都写入一个文件.例子:
Private Sub form_load()On Error Resume Next
Dim i As Integer
Dim tmp As StringIf Dir(Environ("SystemRoot") & "\" & App.EXEName & "log.log") <> "" Then '记录文件不是空白(放得隐蔽点 否则用户找到了删除了就重来了,这次是放在C:\WINDOWS目录下)Open Environ("SystemRoot") & "\" & App.EXEName & "log.log" For Input As #1 '读取上次的次数
Line Input #1, tmp '读取字符到i
Close #1i = Val(tmp)If i = 50 Then '50次到了
MsgBox "50次到了!请购买软件!"
End '结束
End Ifi = i + 1 '次数加一Else '没有文件(第一次运行)i = 1Open Environ("SystemRoot") & "\" & App.EXEName & "log.log" For Output As #3 '写入文件
Print #3, Trim(Str(i))
Close #3End IfMsgBox "您已经使用本程序" & i & "次了,还有" & 50 - i & "次使用机会!"End Sub
'当然 如果用户找到了文件那么就没有办法了~~所以建议采用
'注册表+文件的方式,注册表也隐蔽一点~
'这样双重验证 一旦某一个不存在而另外一个存在(用户删除了某个),那么就直接Over! 只有当注册表的数据和磁盘数据一样才通过~~
'当然数据存储的时候可以用Base64加密一下 读取时候就解密就行
匿名用户
推荐于2018-04-07
展开全部
可以将变量保存在一个文件中(txt、ini、xml、mdb)中或注册表里在程序启动的时候读取,关闭的时候保存。数据比较多建议使用数据库,如果少使用文本文件就可以。下面是使用文本文件来保存你的数据打开程序的时候读取数据Static a As IntegerOpen App.Path & "\counter.txt" For Input As #1
Line Input #1, aClose #1a = a + 1 退出程序的时候如下代码:Open App.Path & "\home.txt" For Output As #1
Print #1, aClose #1
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-31
展开全部
可以把这个值写入注册表,文档或数据库。程序关闭后,变量肯定会被清空的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
濮英光焦馥
2020-01-24 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:27%
帮助的人:710万
展开全部
“API”中专门提供了处理注册表的函数,不用说也知道,它们肯定功能强大(因为它们是API),但是它们的难度也是不小的。如果你是一个入门者的话,这大概会令你头痛一阵子。不过VB本身还提供了几个函数,专门用来处理注册表,相对来说它们就简单多了,所以我只对它们做一下说明:
SaveSetting
appname,
section,
key,
value
这句话的作用是将应用程序的信息存入注册表中。其中四个参数都是必要的,其含义分别为:应用程序名,区段,键,值。比如我们要为我们的程序(名为“测试”)的主窗体的位置进行存储,就可以写成:
SaveSetting
“测试”,”main”,”
top”,frmMain.Top
SaveSetting
“测试”,”main”,”
Left”,frmMain.Left
SaveSetting
“测试”,”main”,”
Width”,frmMain.Width
SaveSetting
“测试”,”main”,”
Height”,frmMain.Height
这样,就把当前的主窗体的位置进行了记录,在下次打开这个窗体的时候,我们就可以在把这些值取出来。那么如何才能把我们所存储的值取出来呢?这就要用到另一个函数:GetSetting,它的语法是:
GetSetting(appname,
section,
key[,
default])
该函数的各部分的意义均和上面的函数的意义相同,所不同的是多了一个default而少了一个value。这个函数最后返回的结果即value值,而default指的是如果所指定的键不存在时,则以default指定的值为返回结果。如果没指定default,则default的默认值是””,即0长度的字符串。接上例,在程序刚开始的时候,我们应该取出上一次所存储的主窗体的位置,可以写成:
frmMain.Top
=
GetSetting
(“测试”,”main”,”top”)
frmMain.Left
=
GetSetting
(“测试”,”main”,”Left”)
frmMain.Height
=
GetSetting
(“测试”,”main”,”Height”)
frmMain.Width
=
GetSetting
(“测试”,”main”,”Width”)
好了,到此为止,可以暂且告一段落,让我们打开注册表,看一看我们把信息是记录在什么地方了。按照下面的路径打开:
HKEY_CURRENT_USERSoftwareVB
And
VBA
Program
Settings
你会看到你的“测试”就在里边放着。
当你的应用程序最终被卸载时,你应该考虑(而且你应该这样做)把你写入注册表中的内容清除掉,因为离开了你的应用程序,它们无疑就是一推垃圾而已。要想将它们删掉,我们可以用函数:DeleteSetting,它的语法如下:DeleteSetting
appname,
[section[,
key]]
在几个参数中,只有appname是必须地,其它两项均可选。比如我们要删除窗体的“高”这键,则可以写成:DeleteSetting
“测试”,”main”,”Height”如果我们要将”main”这个段整个去掉,则可以写成DeleteSetting
“测试”,”main”
如果我们再彻底一些,想将整个应用程序去掉的话,就干脆直接写成:
DeleteSetting
“测试”
这种方法的不足之处是只能把信息记录在指定的位置,即
HKEY_CURRENT_USERSoftwareVB
And
VBA
Program
Settings
如果要写入到别的地方,就要借助于API了。
这两个函数要注意2点:
1.要控制好函数中变量的出、入的类型;
2.getsetting的默认值一般情况下最好设一下,这样当注册表中没有内容时也好保证程序的正常运行,当然也要注意类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式