选择自 mind_1220 的 Blog
要求:
能够读取按照 INI文件的Section和Key来读出相应的Value。
比如一个配置文件
SMSVote.ini
---------------------------------
[Voto por SMS]
Servidor=(local)
DB=SMSVoto
Usuário=sa
Senha=123
[DB2Voto]
Servidor=192.168.0.1
BD=DB2
Usuário=sa
Senha=
---------------------------------
主体程序(方法) :
arquivo ini.asp
-----------------------------------------------
<%
definir IniFileDictionary = CreateObject("Scripting.Dictionary")
Sub IniFileLoad (ByVal FilSpc)
IniFileDictionary.RemoveAll
FilSpc = lcase(FilSpc)
se esquerda(FilSpc, 1) = "p" então
'Caminho físico
PhyPth = mid(FilSpc, instr(FilSpc, "=") + 1)
outro
'Caminho virtual
PhyPth = Server.MapPath(mid(FilSpc, instr(FilSpc, "=") + 1))
terminar se
definir FilSys = CreateObject("Scripting.FileSystemObject")
definir IniFil = FilSys.OpenTextFile (PhyPth, 1)
faça enquanto não for IniFil.AtEndOfStream
StrBuf = IniFil.ReadLine
se StrBuf <> "" então
'Há dados nesta linha
se esquerda(StrBuf, 1) <> ";" então
'Não é um comentário
se esquerda (StrBuf, 1) = "[" então
'É um cabeçalho de seção
HdrBuf = mid(StrBuf, 2, len(StrBuf) - 2)
outro
'É um valor
StrPtr = instr(StrBuf, "=")
AltBuf = lcase(HdrBuf & " ¦" & esquerda(StrBuf, StrPtr - 1))
faça enquanto IniFileDictionary.Exists(AltBuf)
AltBuf = AltBuf & "_"
laço
IniFileDictionary.Add AltBuf, mid(StrBuf, StrPtr + 1)
terminar se
terminar se
terminar se
laço
IniFil.Fechar
definir IniFil = nada
definir FilSys = nada
Finalizar sub
Função IniFileValue(ByVal ValSpc)
dim ifarray
StrPtr = instr(ValSpc, " ¦")
ValSpc = lcase(ValSpc)
se StrPtr = 0 então
'Eles querem toda a seção
StrBuf = ""
StrPtr = len(ValSpc) + 1
ValSpc = ValSpc + "¦"
ifarray=IniFileDictionary.Keys
para i = 0 para IniFileDictionary.Count - 1
se esquerda(ifarray(i), StrPtr) = ValSpc então
'Isto é da seção
se StrBuf <> "" então
StrBuf = StrBuf & "~"
terminar se
StrBuf = StrBuf & ifarray(i) & "=" & IniFileDictionary(ifarray(i))
terminar se
próximo
outro
'Eles querem um valor específico
StrBuf = IniFileDictionary(ValSpc)
terminar se
IniFileValue = StrBuf
Função final
Função Chr(seção,chave)
char1=IniFileValue(seção)
String de pesquisa =char1
SearchChar = chave
MyPos=Instr(1,SearchString,SearchChar,1)
'char2=seção+chave
char1=mid(char1,MyPos+len(chave)+1,len(char1)-MyPos+1)
String de pesquisa =char1
PesquisaChar = "~"
MyPos=Instr(1,SearchString,SearchChar,1)
se MinhaPos<>0 então
char1=meio(char1,1,MyPos-1)
outro
char1=meio(char1,1)
terminar se
Chr = caracter1
Função final
%>
如何使用?
看看这个:
conexão.asp
-----------------------------------------------
<!--#include file="inifile.asp"-->
<%
em caso de erro, retome a seguir
dim conexão,connstr,dbuid,dbpwd,dbname,dbip
chame IniFileLoad("virtual=SMSVote.ini") '配置文件的名字
dbuid=Chr("SMSVote","Usuário") 'Section="SMSVote",Key="Usuário"
dbpwd=Chr("SMSVote","Senha") 'Section="SMSVote",Key="Senha"
dbname=Chr("SMSVote","DB") 'Section="SMSVote",Key="DB"
dbip=Chr("SMSVote","servidor") 'Section="SMSVote",Key="servidor"
definir conn=Server.CreateObject("adodb.Connection")
connstr="PROVIDER=SQLOLEDB;DATA SOURCE="&dbip&";UID="&dbuid&";PWD="&dbpwd&";DATABASE="&dbname
conn.open connstr
'response.write conexão
resposta.write err.descrição
%>