列表框中有几个选项(如几个姓名),想保存到INI文件中(动态的,有可能在程序中添加或删除选项) ,以便下次启动程序时再次添加进列表框中. 想写在INI文件中 [usermail]里,如果只有一个好办,在INI文件里直接写入a=姓名 就好了 因为有好几个所以不知道该怎么写了(注;该INI文件中还有其他的配置参数,我目前是将其写在TXT文件里,现在想事例到INI文件里省事.就用操作INI文件的两个API函数实现) 要怎么写呢?
此API怎么用:
WritePrivateProfileSection VB声明
Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
说明
为一个初始化文件(.ini)中指定的小节设置所有项名和值
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpAppName String,要设置的小节。这个字串不区分大小写
lpString String,项和值字串的一个列表。每个字串都用一个NULL字符分隔,最后一个字串后面用两个NULL表示中止。如lpAppName指定的小节不存在,则用那个名字新建一个小节,并将其追加到初始化文件的最后。如果存在,则当前的所有项名和值都会被这个缓冲区中指定的数据取代
lpFileName String,初始化文件的名字。如指定了一个完整路径,而且文件不存在,就会产生错误。如只指定了文件名,而且文件不存在,就在当前的windows目录中创建它
第二个参数"NULL字符"不知道是用什么表示的? 最好能举个例子. 谢谢
此API怎么用:
WritePrivateProfileSection VB声明
Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
说明
为一个初始化文件(.ini)中指定的小节设置所有项名和值
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpAppName String,要设置的小节。这个字串不区分大小写
lpString String,项和值字串的一个列表。每个字串都用一个NULL字符分隔,最后一个字串后面用两个NULL表示中止。如lpAppName指定的小节不存在,则用那个名字新建一个小节,并将其追加到初始化文件的最后。如果存在,则当前的所有项名和值都会被这个缓冲区中指定的数据取代
lpFileName String,初始化文件的名字。如指定了一个完整路径,而且文件不存在,就会产生错误。如只指定了文件名,而且文件不存在,就在当前的windows目录中创建它
第二个参数"NULL字符"不知道是用什么表示的? 最好能举个例子. 谢谢
如果一个ini里你直接使用这个参数,没有ini文件则会创建,没有类名也会建创,没有子类名也会创建,没有参数也会创建
如果这样
WritePrivateProfileString("c:\123.ini", "iniok", "date",now)
结果就是c:\123.ini会有如下内容
[iniok]
date=当前日期当你再执行
WritePrivateProfileString("c:\123.ini", "iniok1", "date2",now)
结果就是c:\123.ini会有如下内容
[iniok]
date=当前日期
[iniok1]
date2=当前日期
以此类推。。
Win9X:Yes
WinNT:Yes
【说明】
为一个初始化文件(.ini)中指定的小节设置所有项名和值
【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError
【其它】
【参数表】
lpAppName ------ String,要设置的小节。这个字串不区分大小写
lpString ------- String,项和值字串的一个列表。每个字串都用一个NULL字符分隔,最后一个字串后面用两个NULL表示中止。如lpAppName指定的小节不存在,则用那个名字新建一个小节,并将其追加到初始化文件的最后。如果存在,则当前的所有项名和值都会被这个缓冲区中指定的数据取代
lpFileName ----- String,初始化文件的名字。如指定了一个完整路径,而且文件不存在,就会产生错误。如只指定了文件名,而且文件不存在,就在当前的windows目录中创建它
Private Sub Form_Load()
IniFileName = App.Path & "\abc.ini"
Me.Width = GetIniN(App.EXEName, "Width", 3000)
Me.Height = GetIniN(App.EXEName, "Height", 7000)
End Sub
Private Sub Form_Unload(Cancel As Integer)
SetIniN App.EXEName, "Width", Me.Width
SetIniN App.EXEName, "Height", Me.Height
End Sub [/code]
sub WriteMailList(aMailList() as string)
dim lCount as long, i as long
lcount = UBound(aMailList) + 1 '假定 aMailList 下标从 0 开始
WritePrivateProfileString "usermail", vbNullString, vbNullString, "test.ini" '整段删除
WritePrivateProfileString "usermail", "Count", CStr(lCount), "test.ini"
for i=0 to lCount
WritePrivateProfileString "usermail", "Item" & i, aMailList(i), "test.ini"
next
end subfunction GetMailList(aMailList() as string) as boolean
dim sBuffer as string
dim lCount as long, i as long
sBuffer = space(250)
GetPrivateProfileString "usermail", "Count", "0", sBuffer, 250, "test.ini"
lCount = Val(Replace(sBuffer, chr(0), " "))
if lCount <= 0 then exit function redim aMailList(lCount-1)
for i= 0 to lCount
GetPrivateProfileString "usermail", "Item" & i, "", sBuffer, 250, "test.ini"
aMailList(i) = Trim(Replace(sBuffer, chr(0), " "))
next GetMailList = True
end sub