选择自 mind_1220 的 Blog
要求:
能够读取按照 INI文件的Section和Key来读出相应的Value.
比如一个配置文件
SMSVote.ini
---------------------------------
[SMSVoto]
Servidor=(local)
DB=SMSVotar
Usuario=sa
Contraseña=123
[DB2Voto]
Servidor=192.168.0.1
DB=DB2
Usuario=sa
Contraseña=
---------------------------------
主体程序 (方法):
archivoinicial.asp
-----------------------------------------
<%
establecer IniFileDictionary = CreateObject("Scripting.Dictionary")
SubIniFileLoad(PorVal FilSpc)
IniFileDictionary.RemoveAll
FilSpc = lcase(FilSpc)
si izquierda(FilSpc, 1) = "p" entonces
'Camino físico
PhyPth = medio(FilSpc, instr(FilSpc, "=") + 1)
demás
'Camino virtual
PhyPth = Server.MapPath(mid(FilSpc, instr(FilSpc, "=") + 1))
terminar si
establecer FilSys = CreateObject ("Scripting.FileSystemObject")
establecer IniFil = FilSys.OpenTextFile(PhyPth, 1)
hacer mientras no IniFil.AtEndOfStream
StrBuf = IniFil.ReadLine
si StrBuf <> "" entonces
'Hay datos en esta línea
si queda(StrBuf, 1) <> ";" entonces
'No es un comentario
si izquierda(StrBuf, 1) = "[" entonces
'Es un encabezado de sección
HdrBuf = medio(StrBuf, 2, len(StrBuf) - 2)
demás
'Es un valor
StrPtr = instr(StrBuf, "=")
AltBuf = lcase(HdrBuf & "¦" & izquierda(StrBuf, StrPtr - 1))
hacerlo mientras IniFileDictionary.Exists (AltBuf)
AltBuf = AltBuf y "_"
bucle
IniFileDictionary.Agregar AltBuf, mid(StrBuf, StrPtr + 1)
terminar si
terminar si
terminar si
bucle
IniFil.Cerrar
establecer IniFil = nada
establecer FilSys = nada
Subtítulo final
Función IniFileValue(ByVal ValSpc)
matriz if tenue
StrPtr = instr(ValSpc, "¦")
ValSpc = lcaso(ValSpc)
si StrPtr = 0 entonces
'Quieren toda la sección
StrBuf = ""
StrPtr = len(ValSpc) + 1
ValSpc = ValSpc + "¦"
ifarray = IniFileDictionary.Keys
para i = 0 a IniFileDictionary.Count - 1
si left(ifarray(i), StrPtr) = ValSpc entonces
'Esto es de la sección
si StrBuf <> "" entonces
StrBuf = StrBuf & "~"
terminar si
StrBuf = StrBuf & ifarray(i) & "=" & IniFileDictionary(ifarray(i))
terminar si
próximo
demás
'Quieren un valor específico
StrBuf = DiccionarioIniFile(ValSpc)
terminar si
IniFileValue = StrBuf
Función final
Función Chr(sección,tecla)
char1=IniFileValue(sección)
cadena de búsqueda = carácter1
Carácter de búsqueda = clave
MiPos=Instr(1,cadenadebusqueda,carácterdebúsqueda,1)
'char2=sección+clave
char1=mid(char1,MiPos+len(clave)+1,len(char1)-MiPos+1)
cadena de búsqueda = carácter1
Carácter de búsqueda = "~"
MiPos=Instr(1,cadenadebusqueda,carácterdebúsqueda,1)
si MyPos<>0 entonces
char1=medio(char1,1,MiPos-1)
demás
char1=medio(char1,1)
terminar si
Chr = char1
Función final
%>
如何使用?
看看这个:
conexión.asp
-----------------------------------------
<!--#include file="inifile.asp"-->
<%
en caso de error reanudar siguiente
conexión tenue,connstr,dbuid,dbpwd,dbname,dbip
llame a IniFileLoad("virtual=SMSVote.ini") '配置文件的名字
dbuid=Chr("VotoSMS","Usuario") 'Section="VotoSMS",Clave="Usuario"
dbpwd=Chr("VotoSMS","Contraseña") 'Section="VotoSMS",Clave="Contraseña"
dbname=Chr("SMSVote","DB") 'Section="SMSVote",Key="DB"
dbip=Chr("SMSVote","servidor") 'Section="SMSVote",Key="servidor"
establecer conexión=Server.CreateObject("adodb.Connection")
connstr="PROVIDER=SQLOLEDB;FUENTE DE DATOS="&dbip&";UID="&dbuid&";PWD="&dbpwd&";DATABASE="&dbname
conn.open connstr
'respuesta.escribir conexión
respuesta.escribir error.descripción
%>