Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Archivos Ini (https://www.clubdelphi.com/foros/showthread.php?t=31222)

diniremix 02-05-2006 19:40:04

Archivos Ini
 
hola a tod@s de nuevo:cool:

gracias a
Sotrono

y a
luisgutierrezb vbmenu_register("postmenu_134512", true);
por la ayuda en dias pasados:D

estoy trabajando en archivos Ini
y tengo una inquietud

por ej:
[Bloque]
seccion1=valor1,valor2,valor3
seccion1=otro aqui, y otro mas aqui

la pregunta es como leo por ej: el valor2 o valor3 sin tener q leer toda la seccion y buscar entre las comas hasta llegar a ese valor?:confused:

he visto q algunos ini de Window$ tienen esa particularidad al = q algunos Inf (Archivos de Informacion). por ej: el sysoc en C:\WINDOWS\inf

a prop los Inf son muy parecidos en su info a los Ini se les puede hacer lo mismo q a los Ini desde Delphi?
gracias
respuestas....:) :D :cool:

dec 02-05-2006 19:56:02

Hola,

Piensa que los archivos INI se tienen que adaptar a tus necesidades y no al revés. Me explico. Pueden guardarse valores en los archivos INI de este modo, si lo necesitas para algo (y tú sabrás para qué)

Código:

[Seccion]
Clave=valor1,valor2,valor3

Sin embargo, en principio nada te impide guardar la información de este otro modo:

Código:

[Seccion]
Clave1=valor1
Clave2=valor2
Clave3=valor3

Sobre todo si te es más útil guardar así la información, si luego te va a ser más sencillo acceder a ella y utilizarla.

Ahora bien, supongamos que tienes que leer un archivo INI en el que hay claves en que los datos se guardan como dices. Pues... ya habrá entonces varios modos de leer valores.

Seguramente, si eres tú el que guardas los datos de ese modo, será por algo, quiero decir, sabrás también cómo piensas leer los datos guardados de ese modo.

Por ejemplo. Si yo quisiera guardar el contenido de una variable "TStrings" en una determinada clave de un archivo INI, tal vez optaría por utilizar la propiedad "CommaText" de las variables "TStrings", de tal modo que luego podría recuperar el "TStrings" siguiendo el camino contrario.

Con esto ya te estoy proponiendo una posible manera de leer este tipo de datos, guardados de esa forma, separados por comas. La clase "TStrings" puede ayudarte, tal vez, en la tarea. Las variables de la clase "TStrings" sabrás que guardan elementos indexados, de este modo:

Código Delphi [-]
var
  t: TStrings;
begin
  t := TStringList.Create;
  t.Add('Un elemento');
  t.Add('Otro elemento');
  
  ShowMessage(t.Strings[0]); // Muestra "Un elemento"
  ShowMessage(t.Strings[1]); // Muestra "Otro elemento"

  t.Free;
end;

Pues bien, la propia clase "TStrings" también cuenta con una propiedad de nombre "CommaText", la cual podría devolverte sus elementos de este modo:

Código Delphi [-]
ShowMessage(t.CommaText); // Muestra "Un elemento, Otro elemento"

Y, la propiedad "CommaText" también puedes escribirla:

Código Delphi [-]
t.CommaText := "Un nuevo elemento, Otro nuevo elemento";

ShowMessage(t.Strings[0]); // Muestra ahora "Un nuevo elemento"
ShowMessage(t.Strings[1]); // Muestra ahora "Otro nuevo elemento"

¿Soy capaz de explicarme? Creo que me extiendo demasiado. El caso es que podrías los datos separados por comas de una determinada clave de un archivo INI, y asignar dichos datos separados por comas a la propiedad "CommaText" de una variable "TStrings" que tuvieras preparada a tal efecto.

De ese modo la clase "TStrings" haría el trabajo, y tú tendrías los diferentes datos separados por comas (ya por separado) en cada uno de los elementos de la variable "Tstrings" que utilizases, algo así como esto:

Código Delphi [-]
var
  i: integer;
  ini: TIniFile;
  t: TStrings;

begin
  ini := TIniFile.Create('C:\archivo.ini');
  t := TStringList.Create;

  t.CommaText := ini.ReadKey('Clave');

  for i := 0 to t.Count-1 do
  begin
    ShowMessage('Dato ' + IntToStr(i) + ':' t.Strings[i]);
  end;

  t.Free;
  ini.Free;
end;

El código anterior está escrito de memoria, así que los métodos y parámetros de estos pueden no corresponderse con la realidad, pero, la idea creo que más o menos queda clara.

Y bueno, terminar diciendo que seguramente pueda hacerse lo que dices de otras maneras. Que disculpes este rollo y que si te queda alguna duda la hagas saber por aquí a ver si alguien puede echarte una mano.

diniremix 02-05-2006 22:43:27

Gracias otra vez ;)
 
hola ;)
gracias por la respuesta
a.
dec vbmenu_register("postmenu_134834", true);

la verdad m enredaste un poquito pero revisare tu codigo, hare un par de pruebas y despues t aviso vale...:)
sabes... esto...
Código Delphi [-]
[Seccion]
Clave1=valor1
Clave2=valor2
Clave3=valor3
es muy util (la verdad es como siempre los he manejado) pero m gustan las cosas mas dificiles y por q no hacerla d este modo:cool: :D

Código Delphi [-]
[Seccion]
Clave=valor1,valor2,valor3
d todas maneras gracias :) :D ahh
para todos le aviso el source del q estoy haciendo lo paso una vez lo termine es sencillo pero c q les gustará

saludos a tod@s en el foro:) :D :cool:

rafita 02-05-2006 22:56:11

Buenas amigos del foro.

Por favor, un fuerte aplauso para el compañero Dec por la fantastica explicación anterior.

Yo estoy aquí para aprender, y con gente así sí que se puede.

Gracias Dec.

esocrates 03-05-2006 01:37:43

Cita:

Empezado por rafita

Por favor, un fuerte aplauso para el compañero Dec por la fantastica explicación anterior.

Yo estoy aquí para aprender, y con gente así sí que se puede.

Gracias Dec.

Me uno al aplauso.
Un saludo

aams01 13-05-2011 19:32:51

Cita:

Empezado por rafita (Mensaje 134874)
Buenas amigos del foro.

Por favor, un fuerte aplauso para el compañero Dec por la fantastica explicación anterior.

Yo estoy aquí para aprender, y con gente así sí que se puede.

Gracias Dec.

Yo me uno después de mucho pero me uno.


La franja horaria es GMT +2. Ahora son las 20:09:20.

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