zoukankan      html  css  js  c++  java
  • 用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  
    %>  
  • 相关阅读:
    html表单的创建
    mysql数据库连接标准操作
    关于Apache+MySQL+PHP下载及配置注意事项
    两个范例
    Stack类
    Collections类集
    key可以重复的map集合:IdentityHashMap
    foreach对集合的输出作用
    ListIterator接口
    【官方方法】xcode7免证书真机调试
  • 原文地址:https://www.cnblogs.com/studio313/p/365433.html
Copyright © 2011-2022 走看看