WEB开发网
开发学院WEB开发ASP 用ASP读INI配置文件的函数 阅读

用ASP读INI配置文件的函数

 2005-08-18 10:30:53 来源:WEB开发网   
核心提示:选择自 mind_1220 的 Blog 要求: 能够读取按照 INI文件的Section和Key来读出相应的Value。 比如一个配置文件 SMSVote.ini - [SMSVote] Server=(local) DB=SMSVote User=sa PassWord=123 [DB2Vot

选择自 mind_1220 的 Blog

要求: 
能够读取按照  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 
%> 

Tags:ASP INI 配置

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接