Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-09-2008
Avatar de lookmydoom
lookmydoom lookmydoom is offline
Miembro
 
Registrado: abr 2006
Posts: 102
Poder: 19
lookmydoom Va por buen camino
Question Duda sacar el valor de una clave en archivos ini

Que tal, tengo una duda con respecto al manejo de los archivos ini, mas concretamente con la lectura de valores de las claves.

Segun se la forma de leer un valor de una clave es atravez de la funcion readstring pero esta nececita como parametro el valor por default y no entiendo como puede devolver un valor que yo mismo le estoy dando en vez de sacarlo del archivo ini.

Por ejemplo si tuviera un archivo ini con la siguiente estructura

[MySeccion]
MyClave1=myvalor1
MyClave2=myvalor2
MyClave3=myvalor3

y el codigo fuera

Código Delphi [-]
procedure algo;
var valor:string;
begin
   valor:=MyIniFile.readstring(MySeccion,MyClave1,''); 
end;

Esto siempre me devuelve el valor en blanco o sea lo ponga como ultimo parametro en vez del valor real que seria "myvalor1 o myvalor2 o myvalor3"
Responder Con Cita
  #2  
Antiguo 03-09-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola lookmydoom, supongo que MySection y MyClave1, deben ser variables, por eso no lo pones entre comillas. Te devuelve el valor por defecto, cuando la sección o clave no existen o no le has dado ningún valor a tu clave, revisa tu archivo.

Si fuera así:

[MySeccion]
MyClave1=myvalor1

este codigo debería devolverte myvalor1 en valor.

Código Delphi [-]
 valor:=MyIniFile.readstring('MySeccion','MyClave1','');

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 03-09-2008
Avatar de lookmydoom
lookmydoom lookmydoom is offline
Miembro
 
Registrado: abr 2006
Posts: 102
Poder: 19
lookmydoom Va por buen camino
Bueno me respondo a mi mismo ya que debido a no revisar bien la forma en la que obtenía las claves me estaba dando ese error.

El orden que se debe usar para poder sacar el valor de una clave seria:

ReadSections //para que devuelva todas las secciones a un TStringList
ReadSection //que devolvera las claves de la correspondiente seccion y los metera en otro TStringList
ReadString //finalmente devuelve el valor de la calve

pero mejor pongo el ejemplo

Código Delphi [-]
var Secciones,Claves:TStringList; valor:String;
begin
  Secciones:=Tstringlist.create;
  Claves:=Tstringlist.create;
  MyIniFile.ReadSections(Secciones); //Se supone que ya se creo el IniFile y se le asigno el arhivo correspondiente
  MyIniFile.ReadSection(Secciones.Strings[0],Claves);
  valor:=MyIniFile.ReadString(Seciones.Strings[0],Claves.Strings[0],'');
end;

Última edición por lookmydoom fecha: 03-09-2008 a las 05:09:28.
Responder Con Cita
  #4  
Antiguo 03-09-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por lookmydoom Ver Mensaje
Bueno me respondo a mi mismo ya que debido a no revisar bien la forma en la que obtenía las claves me estaba dando ese error.

El orden que se debe usar para poder sacar el valor de una clave seria:

ReadSections //para que devuelva todas las secciones a un TStringList
ReadSection //que devolvera las claves de la correspondiente seccion y los metera en otro TStringList
ReadString //finalmente devuelve el valor de la calve
Hola lookmydoom,
En realidad esos métodos no implican ningún orden, en todo caso se refiere a una cuestión de necesidad.
Por ejemplo, si sólo quieres leer el valor de una clave de una determinada sección ¿que sentido tiene leer primero la sección, luego la clave y por último el valor si puede hacerse en un sólo paso?

Código Delphi [-]
ReadString('Sección','clave','valor_por_defecto');
A lo que voy es que si lo que necesita es conocer las secciones: ReadSections().
Si se desea saber cuales son las variables de una sección: ReadSection().

¿Se me entiende? Espero que si

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 03-09-2008
Avatar de lookmydoom
lookmydoom lookmydoom is offline
Miembro
 
Registrado: abr 2006
Posts: 102
Poder: 19
lookmydoom Va por buen camino
Pos si se me olvido mencionar eso de NECECIDAD por que justamente nececito de todo esto se haga en un bucle, por eso tengo que cargar las claves por cada seccion.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Devolver el valor de una clave principiante22 Varios 4 03-09-2008 03:13:42
Como sacar el valor de una consulta? mariofur SQL 1 02-06-2007 20:50:45
error, el índice o la clave principal no puede tener un valor null locorez Varios 3 15-12-2006 04:40:42
duda clave primaria en Paradox mak8888 Tablas planas 1 26-06-2005 21:48:57
sacar el valor qrexpr rinaib Impresión 1 07-06-2005 18:00:01


La franja horaria es GMT +2. Ahora son las 02:44:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi