您现在的位置: > 首页 > 网站建设 > 网页编程
>> 最新教程
>> 热门教程
>> 最新游戏资讯
>> 热门游戏资讯
用ASP读INI配置文件的函数
作者:本站                来自:安迪教程网                 加入时间:08-11-20                进入论坛讨论

  要求: 

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

联系方式:QQ:6084884 email:agwcn@126.com 粤ICP备05055782号
本网站中发布的文章只代表发表人的个人观点,不代表安迪教程网网站的立场
copyright© 2000-2004 安迪教程网 All rights reserved agwcn.com