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]); ShowMessage(t.Strings[1]);
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);
Y, la propiedad "CommaText" también puedes escribirla:
Código Delphi
[-]
t.CommaText := "Un nuevo elemento, Otro nuevo elemento";
ShowMessage(t.Strings[0]); ShowMessage(t.Strings[1]);
¿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.