用ASP读INI配置文件的函数

王朝asp·作者佚名  2006-11-24
宽屏版  字体: |||超大  

要求:

能够读取按照 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="&dbnam

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有