手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp编程>列表

用ASP读INI配置文件的函数

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

选择自 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
%>

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!