VB6中一个非常好用的读写Ini文件的模块
发布时间:2020-12-16 22:49:50 所属栏目:大数据 来源:网络整理
导读:VB6中一个非常好用的读写Ini文件的模块 新建模块(建议不使用注册表) 命名为rwini 'ini文件在有回车换行符会出错,经过测试,汉字要小于86字节,英言文要小于143字节才能返回列表框。(这是我以前的code,是记录列表框内容的) Option Explicit Public iniFi
VB6中一个非常好用的读写Ini文件的模块
新建模块(建议不使用注册表) 命名为rwini 'ini文件在有回车换行符会出错,经过测试,汉字要小于86字节,英言文要小于143字节才能返回列表框。(这是我以前的code,是记录列表框内容的) Option Explicit Public iniFileName As String Public Declare Function GetPrivateProfileInt Lib "kernel32 " Alias "GetPrivateProfileIntA " (ByVal lpApplicationName As String,ByVal lpKeyName As String,ByVal nDefault As Long,ByVal lpFileName As String) As Long Public Declare Function GetPrivateProfileString Lib "kernel32 " Alias "GetPrivateProfileStringA " (ByVal lpApplicationName As String,ByVal lpKeyName As Any,ByVal lpDefault As String,ByVal lpReturnedString As String,ByVal nSize As Long,ByVal lpFileName As String) As Long Public Declare Function WritePrivateProfileString Lib "kernel32 " Alias "WritePrivateProfileStringA " (ByVal lpApplicationName As String,ByVal lpString As Any,ByVal lpFileName As String) As Long '****************************************获取Ini字符串值(Function)****************************************** Function GetIniS(ByVal SectionName As String,ByVal KeyWord As String,ByVal DefString As String) As String Dim ResultString As String * 144,Temp As Integer Dim s As String,i As Integer Temp% = GetPrivateProfileString(SectionName,KeyWord," ",ResultString,144,AppProFileName(iniFileName)) '检索关键词的值 If Temp% > 0 Then '关键词的值不为空 s = " " For i = 1 To 144 If Asc(Mid$(ResultString,i,1)) = 0 Then Exit For Else s = s & Mid$(ResultString,1) End If Next Else Temp% = WritePrivateProfileString(SectionName,DefString,AppProFileName(iniFileName)) '将缺省值写入INI文件 s = DefString End If GetIniS = s End Function '**************************************获取Ini数值(Function)*************************************************** Function GetIniN(ByVal SectionName As String,ByVal DefValue As Long) As Integer Dim d As Long,s As String d = DefValue GetIniN = GetPrivateProfileInt(SectionName,DefValue,AppProFileName(iniFileName)) If d <> DefValue Then s = " " & d d = WritePrivateProfileString(SectionName,s,AppProFileName(iniFileName)) End If End Function '***************************************写入字符串值(Sub)************************************************** Sub SetIniS(ByVal SectionName As String,ByVal ValStr As String) Dim res% res% = WritePrivateProfileString(SectionName,ValStr,AppProFileName(iniFileName)) End Sub '****************************************写入数值(Sub)****************************************************** Sub SetIniN(ByVal SectionName As String,ByVal ValInt As Long) Dim res%,s$ s$ = Str$(ValInt) res% = WritePrivateProfileString(SectionName,s$,AppProFileName(iniFileName)) End Sub ' '这是我自已不知道怎样清除一个键(keyword) 时 写的一个清除字符串值的过程,是有write函数写入一个空的值实现的, 'Sub DelIniS(ByVal SectionName As String,ByVal KeyWord As String) 'Dim retval As Integer 'retval = WritePrivateProfileString(SectionName,AppProFileName(iniFileName)) 'End Sub '其实0&表示前面的一个被清除,我多写了一个“”,如果是清除section就少写一个Key多一个“”。 '***************************************清除KeyWord "键 "(Sub)************************************************* Sub DelIniKey(ByVal SectionName As String,ByVal KeyWord As String) Dim RetVal As Integer RetVal = WritePrivateProfileString(SectionName,0&,AppProFileName(iniFileName)) End Sub '如果是清除section就少写一个Key多一个“”。 '**************************************清除 Section "段 "(Sub)*********************************************** Sub DelIniSec(ByVal SectionName As String) '清除section Dim RetVal As Integer RetVal = WritePrivateProfileString(SectionName,AppProFileName(iniFileName)) End Sub '*************************************定义Ini文件名(Function)*************************************************** '定义ini文件名 Function AppProFileName(iniFileName) AppProFileName = App.Path & " " & iniFileName & ".ini " End Function ####################################################################### '用法: 首先 定义iniFileName= "文件名 " 不需要 加ini后缀 '这就是说,你可以赋值给iniFileName就可以写入记录,而且你可以随时写入不同的ini文件(不管这个文件是否已存在),通过修改这个公用变量。 '然后 DelInikey(ByVal SectionName As String,ByVal KeyWord As String) 清除键 'DelIniSec(ByVal SectionName As String)) 清除部 'SetIniN(ByVal SectionName As String,ByVal ValInt As Long) 写入数 'GetIniN(ByVal SectionName As String,ByVal DefValue As Long)读取数 'SetIniS (ByVal SectionName As String,ByVal ValStr As String) 写入字符 'GetIniS(ByVal SectionName As String,ByVal ValStr As String) 读取字符 调用例子如下: Sub RiniN() Dim Initemp As String Initemp = iniFileName '暂存原来的Ini文件名 iniFileName = App.EXEName '写入到另外一个Ini文件,App.EXEName是你的程序的名程 If GetIniN( "lstBackup ","backupnumber ",0) < lstBackUp.ListCount Then '这里的第三个参数“0”表示在没有找到指定的键值时返回的缺省值为“0” SetIniN "lstBackup ",lstBackUp.ListCount '...... End If iniFileName = Initemp '继续使用原来的Ini文件 End Sub 建立与读取.ini文件 作者: cww 虽然进入win95之後,一般读写ini文件被读写Registry所取代,但我们还是可以透过 win31的传统方式读写ini文件,以存程式目前的相关设定,而於下一次程式执行时再 读回来。目前建议使用GetSetting SaveSetting的方式存於Registry中,不用目前 的方式。 储存程式的设定 '请於form中放3个TextBox,一个CommandBox Private Declare Function GetPrivateProfileString Lib "kernel32 " _ Alias "GetPrivateProfileStringA " (ByVal lpApplicationName As String,_ ByVal lpKeyName As Any,_ ByVal lpReturnedString As String,_ ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32 " _ Alias "WritePrivateProfileStringA " (ByVal lpApplicationName As String,_ ByVal lpFileName As String) As Long Private Sub Command1_Click() Dim success As Long success = WritePrivateProfileString( "MyApp ","text1 ",Text1.Text,"c:aa.ini ") '叁数一 Section Name '叁数二 於.ini中的项目 '叁数三 项目的内容 '叁数四 .ini文件的名称 success = WritePrivateProfileString( "MyApp ","text2 ",Text2.Text,"c:aa.ini ") success = WritePrivateProfileString( "MyApp2 ","text3 ",Text3.Text,"c:aa.ini ") End Sub Private Sub Form_load() Dim ret As Long Dim buff As String buff = String(255,0) ret = GetPrivateProfileString( "Myapp ",buff,256,"c:aa.ini ") '若.ini MyApp中无text1,则采用叁数三的值 Text1.Text = buff buff = String(255,"c:aa.ini ") Text2.Text = buff buff = String(255,0) ret = GetPrivateProfileString( "Myapp2 ","c:aa.ini ") Text3.Text = buff End Sub
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |