PDA

Ver la Versión Completa : TObjectList y TStringList


esquerda21
21-01-2004, 09:48:48
Buenas. Con vuestra ayuda he echo el siguiente codigo utilizando TObjectList y TStringLIst. Despues de mirar la ayuda me di cuenta q la variable soc en vez de de TObjectList hubiera sido mejo del tipo TStringLIst y con el metodo ADD.Object q aparte de asignarle un objeto tambien permite un string y ese strings yo lo utilizare para un control posterior.
Como podria cambiar soc de TobjectList a TStringList y a cada objeto q le inserte ponerle un string := 0 con el metodo ADD.OBJECT.


var
Form1: TForm1;
soc: TObjectList;
implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
soc:= TObjectList.Create;
soc.OwnsObjects:= true;
end;
//-----------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
indice: integer;
i: integer;
temp: TStringLIst;
begin
I:= 0;
indice:= soc.Add(TStringLIst.create());
temp:= soc.items[indice] as TStringList;
while i <> 5 do
begin
temp.Add(inttostr(i));
i:= i + 1;
end;
//soc.Free();
end;
//------------------------------------------------------------------------
procedure TForm1.Button5Click(Sender: TObject);
var
indice: integer;
i: integer;
temp: TStringLIst;
begin
I:= 0;
indice:= soc.Add(TStringLIst.create());
temp:= soc.items[indice] as TStringList;
while i <> 5 do
begin
temp.Add(inttostr(i + 10));
i:= i + 1;
end;
//soc.Free();
end;
//------------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Label1.Caption:= inttostr(soc.count);
end;
//------------------------------------------------------------------------
procedure TForm1.Button3Click(Sender: TObject);
var
s: integer;
begin
for s:= 0 to TStringList(soc[0]).Count - 1 do
form1.ListBox1.Items.Add(TstringList(soc[0]).strings[s]);
end;
//------------------------------------------------------------------------
procedure TForm1.Button4Click(Sender: TObject);
var
s: integer;
begin
for s:= 0 to TStringList(soc[1]).Count - 1 do
form1.ListBox1.Items.Add(TstringList(soc[1]).strings[s]);
end;
//------------------------------------------------------------------------
end.

marto
21-01-2004, 10:38:27
1.- Si vas aponer código en tus post's, por favor, ponlo entre los tags ... e indéntalo, sinó es terrible intentarlo seguir.

2.-No soy moderador, pero creo que una cosa es preguntar una duda o pedir que se explique una técnica y otra es poner el código del programa y pedir que te lo recodifiquemos. No sé, es una opinión.
De todas maneras, te diré que si buscas en la ayuda de TStrings verás que tiene una propiedad Objects que es un array. Cuando haces un AddObject(String1, Object1), Object1 queda vinculado a String1 de manera que si String1 esta en la posicion 3 de los Items de la TStrings, Object1 estará en Objects[3].

esquerda21
21-01-2004, 10:55:19
Q es un tags?... Igualmente la proxima vez q haga un post intentare averiguarlo para asi seguir las normas del foro.

POr la segunda custion q has expuesto t dire q simplemente es mejor ver un ejemplo y si es ejemplo con explicacion ya te c..gas...
POr otra parte yo no he puesto el codigo para q me lo corrijan, lo he insertado para dar una idea precisa de lo q quiero hacer. Igualmente respeto tu opinion y en la proxima pregunta intentare se mas esplicito.

Igualmente Recive mi mas cordial agradecimiento por la atencion q me has prestado.

__cadetill
21-01-2004, 11:02:09
Q es un tags?... Igualmente la proxima vez q haga un post intentare averiguarlo para asi seguir las normas del foro.
Un tag es una etiqueta que sirve para distintas cosas (poner tipos de letra, indentar código,.....). Te recomiendo este enlace (http://www.clubdelphi.com/foros/misc.php?do=bbcode#code) donde se explican todas las etiquetas, en especial la CODE

esquerda21
21-01-2004, 13:06:45
He conseguido introducirlo pero...
-------------------- soc : TStringLIst
var
indice: integer;
i: integer;
temp: TStringLIst;
begin
I:= 0;
indice:= soc.AddObject('0', TStringLIst.create());
temp:= soc.Objects[indice] as TStringList;
while i <> 5 do
begin
temp.Add(inttostr(i + 10));
i:= i + 1;
end;
-----------------
Como hago para representarlo en un listbox? algo así..

form1.ListBox1.Items.Add(TstringList(soc[0]objects[0].strings[0]);??

marto
21-01-2004, 14:03:43
prueba esto:

form1.ListBox1.Items := TStrings(Soc.Objects[0]);

esquerda21
21-01-2004, 15:16:58
Joer marto tu si que eres un maestro.

Funciona de muerte. gracias otra vez.