CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

关于INI文件操作的问题

楼主sunfanet(十年磨剑)2004-05-03 14:42:27 在 VB / API 提问

Private   Declare   Function   GetProfileString   Lib   "kernel32"   Alias   "GetProfileStringA"   (ByVal   lpAppName   As   String,   ByVal   lpKeyName   As   String,   ByVal   lpDefault   As   String,   ByVal   lpReturnedString   As   String,   ByVal   nSize   As   Long)   As   Long  
   
  我怎么用这个函数获得INI文件内  
  的小节名称[]以及其他的各个参数的值?  
  问题点数:0、回复次数:6Top

1 楼MSTOP(陈建华)回复于 2004-05-03 15:57:42 得分 0

 
  Private   Declare   Function   WritePrivateProfileString   _  
  Lib   "kernel32"   Alias   "WritePrivateProfileStringA"   _  
  (ByVal   lpApplicationname   As   String,   ByVal   _  
  lpKeyName   As   Any,   ByVal   lsString   As   Any,   _  
  ByVal   lplFilename   As   String)   As   Long  
   
  Private   Declare   Function   GetPrivateProfileString   Lib   _  
  "kernel32"   Alias   "GetPrivateProfileStringA"   _  
  (ByVal   lpApplicationname   As   String,   ByVal   _  
  lpKeyName   As   String,   ByVal   lpDefault   As   _  
  String,   ByVal   lpReturnedString   As   String,   _  
  ByVal   nSize   As   Long,   ByVal   lpFileName   As   _  
  String)   As   Long  
   
  '  
  '读INI文件.  
  '函数:GetIniStr  
  '参数:AppName   项目名.In_Key   键名,sFileName   文件名  
  '返回值:成功:对应的键值.失败或不存在:""  
  Public   Function   GetIniStr(ByVal   AppName   As   String,   ByVal   In_Key   As   String,   ByVal   sFileName   As   String)   As   String  
           
          On   Error   GoTo   GetIniStrErr  
           
          If   VBA.Trim$(In_Key)   =   ""   Then  
                GoTo   GetIniStrErr  
          End   If  
   
          Dim   GetStr   As   String  
          GetStr   =   VBA.String(128,   0)  
          GetPrivateProfileString   AppName,   In_Key,   "",   GetStr,   256,   sFileName  
          GetStr   =   VBA.Replace(GetStr,   VBA.Chr(0),   "")  
          If   GetStr   =   ""   Then  
                GoTo   GetIniStrErr  
          Else  
                GetIniStr   =   GetStr  
                GetStr   =   ""  
          End   If  
          Exit   Function  
   
  GetIniStrErr:  
                Err.Clear  
                GetIniStr   =   ""  
                GetStr   =   ""  
  End   Function  
   
  '  
  '写INI文件.  
  '函数:WriteIniStr  
  '参数:AppName   项目名.In_Key   键名,In_Data   键值,sFileName   文件名  
  '返回值:成功=TRUE.失败=FALSE  
  Public   Function   WriteIniStr(ByVal   AppName   As   String,   ByVal   In_Key   As   String,   ByVal   in_data   As   String,   ByVal   sFileName   As   String)   As   Boolean  
          On   Error   GoTo   WriteIniStrErr  
          WriteIniStr   =   True  
          If   VBA.Trim(in_data)   =   ""   Or   VBA.Trim(In_Key)   =   ""   Or   VBA.Trim(AppName)   =   ""   Then  
                GoTo   WriteIniStrErr  
          Else  
            WritePrivateProfileString   AppName,   In_Key,   in_data,   sFileName  
          End   If  
          Exit   Function  
           
  WriteIniStrErr:  
                Err.Clear  
                WriteIniStr   =   False  
  End   Function  
  Top

2 楼sunfanet(十年磨剑)回复于 2004-05-04 20:16:32 得分 0

再接着问一个问题:  
  在ini文件未知的情况下,能不能获得   所有参数的值?  
   
  另外你上面提到的   VBA   是什么?Top

3 楼faib920(Believe Oneself,Believe Lover.)回复于 2004-06-08 17:54:10 得分 0

Public   Function   IniGetValue(iniFileName   As   String,   Section   As   String,   Name   As   String)   As   String  
  '读取INI文件值  
          On   Error   GoTo   er  
          Dim   S   As   String  
          S   =   String(1024,   0)  
          S   =   Left(S,   Val(GetPrivateProfileString(Section,   Name,   "",   S,   Len(S),   iniFileName)))  
          i   =   InStr(S,   Chr(0))  
          If   i   <>   0   Then   IniGetValue   =   Left(S,   i   -   1)   Else   IniGetValue   =   S  
  er:  
          If   Err.Number   <>   0   Then   IniGetValue   =   ""  
  End   Function  
   
  Public   Function   IniDeleteSection(iniFileName   As   String,   Section   As   String)  
  '删除节点  
          IniDeleteSection   =   WritePrivateProfileString(Section,   vbNullString,   vbNullString,   iniFileName)  
  End   Function  
   
  Public   Function   IniDeleteKey(iniFileName   As   String,   Section   As   String,   Name   As   String)  
  '删除值  
          IniDeleteKey   =   WritePrivateProfileString(Section,   Name,   vbNullString,   iniFileName)  
  End   Function  
   
  Public   Function   IniSetValue(iniFileName   As   String,   Section   As   String,   Name   As   String,   Value   As   String)   As   Long  
  '写入INI文件值  
          IniSetValue   =   WritePrivateProfileString(Section,   Name,   Value,   iniFileName)  
  End   Function  
   
  Public   Function   IniGetAllKey(iniFileName   As   String,   Section   As   String,   Key()   As   String)   As   Long  
  '读取INI文件节下的键  
          On   Error   GoTo   er  
          Dim   ss   As   String  
          Dim   pos   As   Integer,   Count   As   Integer  
          buffer   =   String(32767,   0)  
          GetPrivateProfileSection   Section,   buffer,   Len(buffer),   iniFileName  
          pos   =   InStr(buffer,   Chr(0))  
          Do  
                  ReDim   Preserve   Key(Count)  
                  ss   =   Left(buffer,   pos   -   1)  
                  Key(Count)   =   Left(ss,   InStr(1,   ss,   "=")   -   1)  
                  buffer   =   Mid(buffer,   pos   +   1)  
                  pos   =   InStr(buffer,   Chr(0))  
                  If   pos   <=   1   Then   Exit   Do  
                  Count   =   Count   +   1  
          Loop  
          IniGetAllKey   =   Count  
          Exit   Function  
  er:  
          ReDim   Key(0)  
          IniGetAllKey   =   0  
  End   Function  
   
  Public   Function   IniGetAllSection(iniFileName   As   String,   Section()   As   String)   As   Long  
  '读取INI文件所有节  
          On   Error   GoTo   er  
          Dim   Length   As   Long,   pos   As   Integer,   Count   As   Integer  
          buffer   =   String(32767,   0)  
          Length   =   GetPrivateProfileString(vbNullString,   vbNullString,   "",   buffer,   Len(buffer),   iniFileName)  
          buffer   =   Left(buffer,   Length)  
          Do  
                  ReDim   Preserve   Section(Count)  
                  pos   =   InStr(buffer,   Chr(0))  
                  If   Left(buffer,   pos   -   1)   =   ""   Then   Exit   Do  
                  Section(Count)   =   Left(buffer,   pos   -   1)  
                  buffer   =   Mid(buffer,   pos   +   1)  
                  If   Len(buffer)   <=   0   Then   Exit   Do  
                  Count   =   Count   +   1  
          Loop  
          IniGetAllSection   =   Count  
          Exit   Function  
  er:  
          ReDim   Section(0)  
          IniGetAllSection   =   0  
  End   FunctionTop

4 楼MSTOP(陈建华)回复于 2004-06-10 02:54:52 得分 0

另外你上面提到的   VBA   是什么?  
  '---------------------------------  
  我有时候突然忘记VB中的某个内部函数,所以,前面加上个VBA,让它自动列出来...  
  Top

5 楼sworddx(.:RNPA:. hillin)回复于 2004-06-28 20:55:14 得分 0

你得用GetPrivateProfileString和WritePrivateProfileString,你说的函数是用来读写win.ini的.Top

6 楼sworddx(.:RNPA:. hillin)回复于 2004-06-28 20:56:39 得分 0

在ini文件未知的情况下,能不能获得   所有参数的值?  
   
  当然可以,把它当文本文件读,读取每行"="之前的内容就可以得到键名,然后用常规方法读取它的值.Top

相关问题

  • ini文件操作
  • 怎样操作ini文件
  • 操作ini文件出错
  • 如何操作ini文件,在vc中。
  • 关于.ini文件的操作
  • 关于ini文件操作问题???
  • 还是ini文件的操作问题
  • ini 文件的结构 及操作! {:)
  • 如何操作ini文件呢?
  • 有关INI文件操作的问题!

关键词

  • 文件
  • vba
  • inifilename
  • inigetvalue
  • byval
  • ini文件
  • writeprivateprofilestring
  • lpkeyname
  • section
  • vbnullstring

得分解答快速导航

  • 帖主:sunfanet

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo