VB6中一个非常好用的读写Ini文件的模块

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

以前学习邹建的,我一直在用 方法:首先再模组里面写入: 1,'在d盤根目錄新建 aaa.ini文件 '模擬程序 '模組中 Option Explicit '------------------------- '聲明 Declare Function WritePrivateProfileString Lib "kernel32 " Alias "WritePrivateProfileStringA " (ByVal lpApplicationName As String,ByVal lpFileName As String) As Long Declare Function GetPrivateProfileString Lib "kernel32 " Alias "GetPrivateProfileStringA " (ByVal lpApplicationName As String,ByVal lpFileName As String) As Long '獲得設置 Public Function MyGetSetting(Section As String,KeyName As String,DefaultValue As String) As String Dim X As Long Dim Holder As String * 255 X = GetPrivateProfileString(Section,KeyName,DefaultValue,Holder,254,"d:\aaa.ini ") MyGetSetting = Left$(Holder,InStr(Holder,Chr$(0)) - 1) End Function '保存設置 Public Sub MySetSetting(Section As String,KeyValue As String) Dim X As Long X = WritePrivateProfileString(Section,KeyValue,"d:\aaa.ini ") End Sub 2,Form界面上: Private Sub Form_Load() Dim strServer As String Dim strUID As String Dim strPWD As String Dim strDBName As String Dim strConString As String strServer = MyGetSetting( "服務器名 ","服務器名 "," ") strUID = MyGetSetting( "用戶名 ","用戶名 "," ") strPWD = MyGetSetting( "密碼 ","密碼 "," ") strDBName = MyGetSetting( "數據庫名 ","數據庫名 "," ") strConString = "Driver={SQL Server};Network Library=TCP/IP Sockets;SERVER= " & strServer & ";UID= " & strUID & ";PWD= " & strPWD & ";DATABASE= " & strDBName & " " conn.myconn.CommandTimeout = 30 conn.myconn.Open strConString End Sub 调用MyGetSetting函数,在From_load从ini档里面读出信息,然后把服务器名,用户名,密码,数据库名串到字符串里面,然后打开 3,执行SQL语句: Private Sub Command1_Click() Dim rs As ADODB.Recordset Dim sql As String sql = "select * from student " Set rs = conn.myconn.Execute(sql) If rs.RecordCount > 0 Then Set TDBGrid2.DataSource = rs End If End Sub 4,验证代码: 写入ini 档 Private Sub Command3_Click() '保存變量 MySetSetting "服務器名 ","mis25 " MySetSetting "用戶名 "," " MySetSetting "密碼 "," " MySetSetting "數據庫名 ","hh " MsgBox "保存成功 " End Sub 5,读出ini档里面的内容 Private Sub Command4_Click() '取出變量 MsgBox MyGetSetting( "服務器名 "," ") MsgBox MyGetSetting( "用戶名 "," ") MsgBox MyGetSetting( "密碼 "," ") MsgBox MyGetSetting( "數據庫名 "," ") End Sub 6,如果想保存在当前路径下:则把上面的代码改为: '獲得設置 Public Function MyGetSetting(Section As String,DefaultValue As String) As String Dim X As Long Dim Holder As String * 255 ' X = GetPrivateProfileString(Section,"d:\aaa.ini ") X = GetPrivateProfileString(Section,App.Path & "\aaa.ini ") MyGetSetting = Left$(Holder,Chr$(0)) - 1) End Function同样读出当前路径下的内容时,也把上面的代码改为 '保存設置 Public Sub MySetSetting(Section As String,KeyValue As String) Dim X As Long ' X = WritePrivateProfileString(Section,"d:\aaa.ini ") X = WritePrivateProfileString(Section,App.Path & "\aaa.ini ") End Sub 1, 在SQLServer数据库里面设置访问数据库的用户名和密码: 打开sqlserver------选择数据库下的User ----右键----New Database User---new 输入用户名和密码(2次) 2,写ini档,在ini档里面纪录用户名和密码: 3,用户使用时候只要copy 和 ini档文件就Ok,因为,程序里面设置读的是当前路径下的ini文档

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 -------------------------------- 数字类型的格式化 --------------------------------     固定格式参数:     General Number 普通数字,如可以用来去掉千位分隔号     format$("100,1
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和系统设置的区域语言的日期和时间格式相关。意思是尽管你用诸如 Format(Now, "MM/dd/yyyy"),如果系统的设置格式区域语言的日期和时间格式分隔符是"-",那他还会显示为 MM-dd-yyyy     只有拼凑: <%response.write
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接添加本ApplicationEvents.vb 到工程即可 ‘添加后还需要一个From用来显示错误。如果到这步还不会则需要先打好基础啦 ‘======================================================== ‘以下事件
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没有认真去找这个方法呀。 https://blog.csdn.net/chzjxgd/article/details/6176325 金蝶K3 BOS的插件官方是用VB6编写的,如果  能用.Net下的语言工具开发BOS插件是一件很愉快的事情,其中缘由不言而喻,而本文则是个人首创,实现在了用V
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, tmpStr As String, s As String Dim x As Integer, y As Integer, subStr As String If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) 2 Dim path As String, hash As String 3 For Each fil
  Imports MySql.Data.MySqlClient Public Class Form1 ‘ GLOBAL DECLARATIONS Dim conString As String = "Server=localhost;Database=net2;Uid=root;Pwd=123456;" Dim con As New MySqlConnection
‘導入命名空間 Imports ADODB Imports Microsoft.Office.Interop   Private Sub A1() Dim Sql As String Dim Cnn As New ADODB.Connection Dim Rs As New ADODB.Recordset Dim S As String   S = "Provider=OraOLEDB.Oracl
Imports System.IO Imports System.Threading Imports System.Diagnostics Public Class Form1 Dim A(254) As String    Function ping(ByVal IP As Integer) As String Dim IPAddress As String IPAddress = "10.0.
VB运行EXE程序,并等待其运行结束 参考:https://blog.csdn.net/useway/article/details/5494084 Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Pr
今天碰到一个问题,登陆的时候,如果不需要验证手机号为空,则不去验证手机号 因为登陆的时候所有的验证信息都存放在一个数组里 Dim CheckUserInfo() As String ={UserBirthday, SecEmail, UserMob, UserSex, RealNameFirst, RealName, CheckCardID, CheckCardType, Contactemail
在VB6.0中,数据访问接口有三种: 1、ActiveX数据对象(ADO) 2、远程数据对象(RDO) 3、数据访问对象(DAO) 1.使用ADO(ActiveX Data Objec,ActiveX数据对象)连接SQL Server 1)使用ADO控件连接 使用ADO控件的ConnectionString属性就可以连接SQL Server,该属性包含一个由分号分隔的argument=value语
注:大家如果没有VB6.0的安装文件,可自行百度一下下载,一般文件大小在200M左右的均为完整版的软件,可以使用。   特别提示:安装此软件的时候最好退出360杀毒软件(包括360安全卫士,电脑管家等,如果电脑上有这些软件的话),因为现如今的360杀毒软件直接会对VB6.0软件误报,这样的话就可能会在安装过程中被误报阻止而导致安装失败,或者是安装后缺乏很多必须的组件(其它的杀毒软件或安全卫士之类的
Private Sub Form_Load() Call conndb End Sub Private Function conndb() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim strCn, sql As String Dim db_host As String Dim db_user As String
  PPSM06S70:  Add  moddate  EDITSPRINTJOB:  MAX(TO_CHAR(ETRN.MODDATE, ‘yyyy/mm/dd/HH24:MI AM‘)) ACTUAL_SHIPDATE   4.Test Scenario (1) :Query SQL Test DN:8016578337 SELECT CTRN.TKCTID TRUCK_ID,        
  沒有出現CrystalReportViewer時,須安裝CRforVS_13_0. 新增1個數據集,新增1個數據表,添加二列,列名要和資料庫名一樣. 修改目標Framework 修改app.config, <startup >改成<startup useLegacyV2RuntimeActivationPolicy ="true">  CrystalReport1.rpt增加數據庫專家 在表單
Imports System.Threading Imports System Public Class Form1 Dim th1, th2 As Thread Public Sub Method1() Dim i As Integer For i = 1 To 100 If Me.Label1.BackColor =
Friend Const PROCESS_ALL_ACCESS = &H1F0FFF = 2035711 Friend Const PROCESS_VM_READ = &H10 Friend Const PROCESS_VM_WRITE = &H20 Friend Const PAGE_READONLY = &H2 Friend Const PAGE_READWRITE = &H4 Friend
以下代码随手写的 并没有大量测试 效率也有待提升 如果需要C#的请自行转换 Function SplitBytes(Data As Byte(), Delimiter As Byte()) As List(Of Byte()) Dim i = 0 Dim List As New List(Of Byte()) Dim bytes As New
Imports System.Data.SqlClient Public Class Form1 REM Public conn1 As SqlConnection = New SqlConnection("server=.; Integrated Security=False;Initial Catalog= mydatabase1; User ID= sa;password")