Para facilitar el uso del usuario y hacer que el sistema sea flexible, la mayoría de las aplicaciones de Windows registran las elecciones realizadas por el usuario y diversos cambios en la información del sistema en el archivo de inicialización (INI). Por lo tanto, cuando cambia el entorno del sistema, el archivo INI se puede modificar directamente sin modificar el programa. Se puede ver que el archivo INI es crucial para la funcionalidad del sistema. Este artículo presentará cómo leer y escribir archivos INI al desarrollar aplicaciones de Windows utilizando Visual Basic para Windows (en lo sucesivo, VB).
El archivo INI es un archivo de texto que consta de varias secciones. Debajo de cada título entre corchetes, hay varias palabras clave (keyWord) que comienzan con una sola palabra y un signo igual. Cada palabra clave controla un determinado aspecto de la aplicación. función, el valor en el lado derecho del signo igual especifica el modo de funcionamiento de la palabra clave. Su forma general es la siguiente:
[sección1]
palabra clave1=valor
palabra clave2=valor2
…
[sección2]
palabra clave1=valor1
palabra clave2=valor2
…
Entre ellos, si no hay nada en el lado derecho del signo igual (es decir, el valor está vacío), significa que la aplicación de Windows ha especificado un valor predeterminado para la palabra clave si es una palabra clave (o una parte completa). no se encuentra en todo el archivo, lo que también significa que se especifican valores predeterminados para ellos. El orden en que aparecen las partes es irrelevante, al igual que el orden de las palabras clave dentro de cada parte.
Generalmente hay dos formas de leer y escribir archivos INI: una es editarlos con el "Bloc de notas" en Windows, que es relativamente simple y no necesita más descripción; la otra es leer y escribir archivos INI mediante una aplicación de Windows, generalmente mediante; ejecutar la aplicación La información del archivo INI se lee cuando se sale de la aplicación y ciertas modificaciones realizadas por el usuario en el entorno de ejecución se guardan cuando se sale de la aplicación.
El tipo de valor de las palabras clave es principalmente cadena o número entero y debe leerse y escribirse en dos situaciones. Para que el programa sea fácil de mantener y portátil, es mejor encapsular la lectura y escritura de archivos INI en un módulo (RWINI.BAS) y construir las funciones GetIniS y GetIniN, así como SetIniS y SetIniN en RWI-NI.BAS. Proceso, debe utilizar las funciones "GetPRivateprofileString", "GetPrivateProfileInt" y "WritePrivateProfileString" de la API de Windows en estas funciones y procesos.
El código de programa del módulo RWINI.BAS es el siguiente:
Declare las funciones API de Windows utilizadas en la sección Declaración general:
DeclareFunctionGetprivateprofileStringLib"Ker-nel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsString, ByVallpRetrm-StringAsString, ByValcbReturnStringAsInteger, ByValFilenameAsString)AsInteger
DeclareFunctionGetPrivatePfileIntLib"Kernel"(ByVallpAppNameAsString, ByVallpKeyNameAsString, ByVallpDefaultAsInteger, ByValFilenameAsString)AsInteger
DeclareFuncitonWritePrivateprofileStringLib"Kernel"(ByVallpapplicationNameAsString, ByVallpKeyNameAsString, ByVallpStringAsString, ByVallplFileNameAsString)AsInteger
FunciónGetIniS(ByValSectionNameAsString, ByValKeyWordAsString, ByValDefStringAsString)AsString
DimResultStringAsString*144,TempAsInteger
DimsAsString, iAsInteger
Temp=GetPrivateProfileString(Nombre de sección,Palabra clave,"",ResultString,144,AppProfileName())
'Recuperar el valor de la palabra clave
IfTemp>0Then'keyword valor no está vacío
s=""
Fori=1A144
IfAsc(Mid$(ResultString,I,1))=0Entonces
Salir para
Demás
s=s&Medio$(CadenaResultado, I, 1)
Fin si
Próximo
Demás
Temp=WritePrivateProfilesString(nombre de sección,Palabra clave,DefString,ppProfileName())
'Escribe los valores predeterminados en el archivo INI
s=cadena definida
Fin si
ObtenerIniS=s
Función final
FunciónGetIniN(ByValSectionNameAsString, ByValKeyWordAsString, ByValDefValue
ComoIneger)ComoInteger
DimdAsLong,sAsString
d=ValorDef
GetIniN=GetPrivateProfileInt(NombreDeSección,
Palabra clave,ValorDef,NombrePerfilpp())
Ifd<>DefValueEntonces
s=""&d
d=WritePrivateProfileString(Nombre de la sección,
Palabra clave,s,NombrePerfilAplicación())
Fin si
Función final
SubSetIniS(ByValSectionNameAsString, BtVaKeyWordAsString, ByValValStr
como cadena)
Dimres
res=WritePrivateprofileString(Nombre de sección,Palabra clave,ValStr,Nombre de perfil de aplicación())
FinSub
SubSetIniN(ByValSectionNameAsString, ByValKeyWordAsString, ByValValInt
Como entero)
Dimes,s$
s$=Str$(ValInt)
res=WriteprivateProfileString(Nombre de sección,Palabra clave,s$,Nombre de perfil de aplicación())
FinSub
SectionName es el título de cada sección, KeyWord es la palabra clave, DefValue en GetIniS y GetIniN es el valor predeterminado de la palabra clave, y ValStr y ValInt en SetIniS y SetIniN son los valores de la palabra clave que se escribirán en el archivo INI. Para ilustrar mejor cómo utilizar las funciones y procedimientos anteriores, a continuación se proporcionan dos ejemplos.
Ejemplo 1:
El desarrollo de aplicaciones generalmente requiere el uso de bases de datos y otros archivos. Los directorios de estos archivos (incluidas las rutas y los nombres de los archivos) no deben fijarse en el programa, sino que se guardan en archivos INI, que se leen desde los archivos INI cuando se ejecuta el programa. correr. El código para leer el archivo de la base de datos es el siguiente:
DimDatabasenameAsString
Nombre de la base de datos=GetIniS("base de datos", "empleado", "")
IfDatabaseName=""ThenDatabaseName=InputBox("Ingrese el directorio de la base de datos "Empleado"),
App.Title)' también se puede seleccionar a través del "Diálogo de archivo"
OnErrorResumeNext
Setdb=OpenDatabas(Nombre de la base de datos)
SiErr<>0Entonces
MsgBox "¡Error al abrir la base de datos!", MB-
ICONSTOP, título de la aplicación: GotoErrorProcessing
Demás
SetIniS"Base de datos","Empleado",Nombre de la base de datos
Fin si
EnErrorGoTo0
…
Ejemplo 2:
Para facilitar las operaciones del usuario, a veces es necesario guardar cierta información de la interfaz de usuario, como la altura y el ancho de la ventana. Al cargar el formulario, lea el alto y el ancho del formulario en el archivo INI. Al descargar el formulario, almacene el alto y el ancho actuales del formulario en el archivo INI.
SubForm1_Load()
…
Forml.Height=GetIniN("Formulario 1", "Altura", 6000)
Form1.Width=GetIniN("Form1","Altura",4500)
FinSub
…
SubForm1_Descargar()
…
SetIniN"Form1","Altura",Me.Altura
SetIniN"Form1,"Ancho",Me.Ancho
…
FinSub->