http://expert.csdn.net/Expert/topic/2229/2229651.xml?temp=.9517786
累计此贴分数共 100 分值.
内容如下:--------------------------------------------
程序思路概述:
也许这样说可能会更加清楚点吧:
咱们假设以下这段这是INI内容(INI文件路径为:"D:\ini\333.ini"):
============================================
[Config]
LangID=0
IsSelective=0
InstallType=0
[Variables]
KRU=Mi56
KEW=Yes
VarName1=%ISWIN31%
VarValue1=False
VarName2=%ISWIN32S%
VarValue2=False
VarName3=%ISWIN95%
VarValue3=False
VarName4=%ISWIN98%
VarValue4=False
VarName5=%ISWINNT3%
VarValue5=False
VarName6=%ISWINNT4%
VarValue6=False
VarName7=%ISWIN2000%
VarValue7=True
VarName8=8.5%
VarValue8=6
VarName9=%ISUSERNTADMIN%
VarValue9=True
VarName10=%WINDIR%
.                    ( . 代表很多行)
.
.
I-90
.
.
K-300
VarValue10=Yes
VarName11=%SYSDIR%
============================================
注:(以上是ini文件内容,只是个例子.....)
我的这个程序中有以下控件:
textbox(用来输入数值)有:text1, text2, text3, (打算用来输入数值修改ini内的相关数值以及路径选择)
commandButton 有:command1, command2, command3, command4(用来点击,确定并执行修改内容)
list 有 list1 (用来选择内容)
另外就是还有一个文件,名字是A属性是dll( A.dll ,目的是为了不想别人知道这是个ini文件 )
程序执行的时候首先监测当前目录下有没有A.dll文件,没有的话提示找不到A.dll文件,该程序退出.有的话进行下一步,继续监测D:\ini\下有没有333.ini这个文件,没有的话此程序自动将准备好的A.dll文件改成333.ini文件放在D:\ini\(最好是放在text3.text所填写的路径内.)如果目录下有333.ini的话直接跳过该选项进行下一步.
以上这些都是在程序运行的时候执行的.
接下来开始操作程序了,在text1.text里输入一个数值,假设我输入: 90 (能限制最大填入值最好了.0-100)
那么当点击command1的时候,这个程序会把文件里的 "VarValue8=6" 修改为 VarValue8=90 也就是只修改"="号后面的内容.(请参看我上述ini例子内容)
选择list的内容(只有Yes和No)当选择yes并点击command2按钮的时候ini文件内的
KRU=Mi56
KEW=Yes 
改变为:
KRU=USER
KEW=No 
否则,前面加上";"号
例如:
;KRU=Mi56
;KEW=Yes
如果不用list而改用其他选择性控件的话(例如就像选择驱动器的控件一样代替List控件),请说明.(我的确是大白菜,VB的初级探索者....)
接着说...在text2里输入15.5当点击command3的时候,程序会把ini文件内的
VarValue7=True
VarName8=8.5%
修改为:
VarValue7=False
VarName8=15.5%
也就是不改变15.5后面的百分号和"="前面的文字.(不好做到的话就直接替换整句.)
另外小弟考虑的一点是,我需要修改的ini文件里有几千行字符串.要是直接定义字符串所在行数的话,我会有点怕怕的.不过在ini文件内加标记可以,例如我需要巴ini文件内第N行的 VarValue10=Yes 修改为 VarValue10=No 那么我可以在他的上一行中加上";0=0=0=0=0"
就像这样:
;0=0=0=0=0
VarValue10=Yes
那么程序就直接在整个ini文件中查找";0=0=0=0=0"并且修改接下来的那一行. 
还有就是.实现添加";"
首先我会先在ini文件中添加标记,假设我会在I-90的上一行 和 K-300的下一行处添加标记"O-O和I-I",那么当我点击command4的时候,位于O-O和I-I之间每一行的最前端添加";"其他的就没有什么了. 
------------------------------------------
谢谢! 

解决方案 »

  1.   

    太麻烦了。你去查查相关资料:
    Public Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As LongPublic 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 LongPublic Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As LongPublic Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long这四个函数用来修改INI文件的。
      

  2.   

    得分人只有一个.
    只要能带给小弟源码(我只能看懂源码.Sorry,我很菜...)
    并解决例子所述问题的.我会把两个帖子的分数都给你.热心的朋友们,小弟在此向你们鞠躬谢谢了!