用ASP读INI配置文件的函数

要求:  
能够读取按照  INI文件的Section和Key来读出相应的Value。  
比如一个配置文件    
SMSVote.ini  
---------------------------------  
[SMSVote]  
Server=(local)  
DB=SMSVote  
User=sa  
PassWord=123  
[DB2Vote]  
Server=192.168.0.1  
DB=DB2  
User=sa  
PassWord=  
---------------------------------  
 
 
主体程序(方法)  :  
 
inifile.asp  
-----------------------------------------------  
<%  
set  IniFileDictionary  =  CreateObject("Scripting.Dictionary")  
 
Sub  IniFileLoad(ByVal  FilSpc)  
   IniFileDictionary.RemoveAll  
   FilSpc  =  lcase(FilSpc)  
   if  left(FilSpc,  1)  =  "p"  then  
       'Physical  path  
       PhyPth  =  mid(FilSpc,  instr(FilSpc,  "=")  +  1)  
   else  
       'Virtual  path  
       PhyPth  =  Server.MapPath(mid(FilSpc,  instr(FilSpc,  "=")  +  1))  
   end  if  
 
   set  FilSys  =  CreateObject("Scripting.FileSystemObject")  
   set  IniFil  =  FilSys.OpenTextFile(PhyPth,  1)  
   do  while  not  IniFil.AtEndOfStream  
       StrBuf  =  IniFil.ReadLine  
       if  StrBuf  <>  ""  then  
           'There  is  data  on  this  line  
           if  left(StrBuf,  1)  <>  ";"  then  
               'It's  not  a  comment  
               if  left(StrBuf,  1)  =  "["  then  
                   'It's  a  section  header  
                   HdrBuf  =  mid(StrBuf,  2,  len(StrBuf)  -  2)  
               else  
                   'It's  a  value  
                   StrPtr  =  instr(StrBuf,  "=")  
                   AltBuf  =  lcase(HdrBuf  &  "  ¦"  &  left(StrBuf,  StrPtr  -  1))  
                   do  while  IniFileDictionary.Exists(AltBuf)  
                       AltBuf  =  AltBuf  &  "_"  
                   loop  
                   IniFileDictionary.Add  AltBuf,  mid(StrBuf,  StrPtr  +  1)  
               end  if  
           end  if  
       end  if  
   loop  
   IniFil.Close  
   set  IniFil  =  nothing  
   set  FilSys  =  nothing  
End  Sub  
 
Function  IniFileValue(ByVal  ValSpc)  
   dim  ifarray  
   StrPtr  =  instr(ValSpc,  "  ¦")  
   ValSpc  =  lcase(ValSpc)  
   if  StrPtr  =  0  then  
       'They  want  the  whole  section  
       StrBuf  =  ""  
       StrPtr  =  len(ValSpc)  +  1  
       ValSpc  =  ValSpc  +  "  ¦"  
       ifarray  =  IniFileDictionary.Keys  
       for  i  =  0  to  IniFileDictionary.Count  -  1  
           if  left(ifarray(i),  StrPtr)  =  ValSpc  then  
               'This  is  from  the  section  
               if  StrBuf  <>  ""  then  
                   StrBuf  =  StrBuf  &  "~"  
               end  if  
               StrBuf  =  StrBuf  &  ifarray(i)  &  "="  &  IniFileDictionary(ifarray(i))  
           end  if  
       next  
   else  
       'They  want  a  specific  value  
       StrBuf  =  IniFileDictionary(ValSpc)  
   end  if  
   IniFileValue  =  StrBuf  
End  Function  
Function  Chr(section,key)  
char1=IniFileValue(section)  
SearchString  =char1        
SearchChar  =  key    
MyPos=Instr(1,SearchString,SearchChar,1)    
'char2=section+key  
char1=mid(char1,MyPos+len(key)+1,len(char1)-MyPos+1)  
SearchString  =char1        
SearchChar  =  "~"  
MyPos=Instr(1,SearchString,SearchChar,1)    
if  MyPos<>0  then  
char1=mid(char1,1,MyPos-1)  
else  
char1=mid(char1,1)  
end  if  
Chr  =  char1  
End  Function  
%>  
 
如何使用?  
 
看看这个:  
conn.asp  
-----------------------------------------------  
<!--#include  file="inifile.asp"-->    
 
<%  
         on  error  resume  next  
         dim  conn,connstr,dbuid,dbpwd,dbname,dbip  
         call  IniFileLoad("virtual=SMSVote.ini")  '配置文件的名字  
         dbuid=Chr("SMSVote","User")            'Section="SMSVote",Key="User"  
         dbpwd=Chr("SMSVote","PassWord")    'Section="SMSVote",Key="PassWord"  
         dbname=Chr("SMSVote","DB")              'Section="SMSVote",Key="DB"  
         dbip=Chr("SMSVote","server")          'Section="SMSVote",Key="server"  
 
set  conn=Server.CreateObject("adodb.Connection")  
connstr="PROVIDER=SQLOLEDB;DATA  SOURCE="&dbip&";UID="&dbuid&";PWD="&dbpwd&";DATABASE="&dbname  
conn.open  connstr  
'response.write  conn  
response.write  err.description  
%>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值