Archivos Ini

943 views
Skip to first unread message

orlin

unread,
Dec 30, 2010, 10:35:46 AM12/30/10
to Comunidad de Visual Foxpro en Español
Hola a todos, nuevamente necesito de su ayuda

Tengo un archivo con la extencion .Ini

Ej.

[CONFIG]

Var1=pedro
Var2=juan
Var3=carlos
Var5=marcos

etc.

como haria para recorrer tola la seccion config y almacenar los
valores en una tabla o array,
tambien queria saber si se puede desde ejecucion agregar una nueva
referecia a mi .Ini.

eje.

[Firmas]

Admin=Administrador

Si alguien puede ayudarme o darme alguna referencia donde pueda buscar
ayuda,
les agradezco.

smartito

unread,
Dec 30, 2010, 2:39:03 PM12/30/10
to Comunidad de Visual Foxpro en Español

Julio Cesar Vente Ruiz

unread,
Dec 30, 2010, 9:34:40 PM12/30/10
to publice...@googlegroups.com
Hola, yo desde hace varios años uso un par de funciones (no son mias y no tengo la referencia del autor) y hasta ahora me han funcionado a la perfección.



**** FUNCION PARA ESCRIBIR EN ARCHIVO DE CONFIGURACION INI
*----------------------------------------------------
* Escribe un valor de un archivo INI.
* Si no existe el archivo, la sección o la entrada, la crea.
* Retorna .T. si tuvo éxito
* PARAMETROS:
*  tcFileName = Nombre y ruta completa del archivo.INI
*  tcSection = Sección del archivo.INI
*  tcEntry = Entrada del archivo.INI
*  tcValue = Valor de la entrada
* USO: WriteFileIni("C:MiArchivo.ini","Default","Port","2")
* En este caso: WriteFileIni(.\archivo.tip,"TipDelDía","Habilitado","S")
* RETORNO: Logico
*----------------------------------------------------
FUNCTION WriteFileIni(tcFileName,tcSection,tcEntry,tcValue)
DECLARE INTEGER WritePrivateProfileString ;
IN WIN32API ;
STRING cSection,STRING cEntry,STRING cEntry,;
STRING cFileName
RETURN IIF(WritePrivateProfileString(tcSection,tcEntry,tcValue,tcFileName)==1, .T., .F.)
ENDFUNC


*** FUNCION PARA LEER EN ARCHIVO DE CONFIGURACION INI
*----------------------------------------------------
* Lee un valor de un archivo INI.
* Si no existe el archivo, la sección o la entrada, retorna .NULL.
* PARAMETROS:
*  tcFileName = Nombre y ruta completa del archivo.INI
*  tcSection = Sección del archivo.INI
*  tcEntry = Entrada del archivo.INI
* USO: ReadFileIni("C:MiArchivo.ini","Default","Port")
* Ejemplo para éste caso
* if ReadFileIni(".\archivo.tip","TipDelDía","Habilitado")="S"
* run/n SabiasQ.exe
* endif
* RETORNO: Caracter
*----------------------------------------------------
FUNCTION ReadFileIni(tcFileName,tcSection,tcEntry)
LOCAL lcIniValue, lnResult, lnBufferSize
DECLARE INTEGER GetPrivateProfileString ;
  IN WIN32API ;
  STRING cSection,;
  STRING cEntry,;
  STRING cDefault,;
  STRING @cRetVal,;
  INTEGER nSize,;
  STRING cFileName
lnBufferSize = 255
lcIniValue = spac(lnBufferSize)
lnResult=GetPrivateProfileString(tcSection,tcEntry,"*NULL*",;
  @lcIniValue,lnBufferSize,tcFileName)
lcIniValue=SUBSTR(lcIniValue,1,lnResult)
IF lcIniValue=="*NULL*"
  lcIniValue=.F.
ENDIF
RETURN lcIniValue
ENDFUNC



--


Julio Cesar Vente Ruiz

ZeRoberto

unread,
Jan 1, 2011, 4:38:41 PM1/1/11
to publice...@googlegroups.com
Debes crear una clave con la cantidad de items creados algo parecido al MRU

Ejemplo

[CONFIG]
MRU=5
Var1=pedro
Var2=juan
Var3=carlos
Var5=marcos


Procedure Carga
lnCantidad = ReadIni("CONFIG", "MRU", "MiArchivo.Ini")
For lnItem=1 To lnCantidad
lcItem = "Valor" + Transform(lnItem)
lcValor = ReadIni("CONFIG", lcItem, "MiArchivo.Ini")
MessageBox(lcValor)
EndFor
EndProc


Espero que te sirva.

Saludos

El 30/12/10, Julio Cesar Vente Ruiz <jvent...@gmail.com> escribió:


> Hola, yo desde hace varios años uso un par de funciones (no son mias y no
> tengo la referencia del autor) y hasta ahora me han funcionado a la
> perfección.
>
>
>

> ***** FUNCION PARA ESCRIBIR EN ARCHIVO DE CONFIGURACION INI*


> *----------------------------------------------------
> * Escribe un valor de un archivo INI.
> * Si no existe el archivo, la sección o la entrada, la crea.
> * Retorna .T. si tuvo éxito
> * PARAMETROS:
> * tcFileName = Nombre y ruta completa del archivo.INI
> * tcSection = Sección del archivo.INI
> * tcEntry = Entrada del archivo.INI
> * tcValue = Valor de la entrada
> * USO: WriteFileIni("C:MiArchivo.ini","Default","Port","2")
> * En este caso: WriteFileIni(.\archivo.tip,"TipDelDía","Habilitado","S")
> * RETORNO: Logico
> *----------------------------------------------------
> FUNCTION WriteFileIni(tcFileName,tcSection,tcEntry,tcValue)
> DECLARE INTEGER WritePrivateProfileString ;
> IN WIN32API ;
> STRING cSection,STRING cEntry,STRING cEntry,;
> STRING cFileName
> RETURN
> IIF(WritePrivateProfileString(tcSection,tcEntry,tcValue,tcFileName)==1, .T.,
> .F.)
> ENDFUNC
>
> *
> *

> **** FUNCION PARA LEER EN ARCHIVO DE CONFIGURACION INI*

Víctor Hugo Espínola Domínguez

unread,
Jul 1, 2012, 4:57:02 PM7/1/12
to publice...@googlegroups.com
Hola orlin

Lo más sencillo es que recurras a las funciones FILETOSTR(), ALINES() y STRTOFILE().

lcTemp = FILETOSTR(  "TuArchivo.ini" )
lnCantLineas = ALINES( laLinea, lcTemp )

Saludos.
Víctor.

Luis Maria Guayan

unread,
Jul 1, 2012, 5:32:41 PM7/1/12
to publice...@googlegroups.com
Creo que lo mejor es utilizar estas funciones de la API de Windows:

-- Escribir y leer un valor de un archivo INI --
http://www.portalfox.com/article.php?sid=9


-- Escribir y Leer Valores en el Win.Ini --
http://www.portalfox.com/article.php?sid=663

-- Usando Archivos .INI versión OOP --
http://www.portalfox.com/article.php?sid=681


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Reply all
Reply to author
Forward
0 new messages