FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
Te he hecho caso y he provado pero me da un error de win.
Supongo q es por no hacer el create SA, no? Lo he comentado mas abajo. Si es eso , donde lo creo? type PMyList = ^AList; AList = record SA: TStringList; end; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; MyList: TList; ARecord: PMyList; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin MyList := TList.Create; try New(ARecord); ARecord^.SA.Add('1'); // El error empieza aqui ARecord^.SA.Add('2'); ARecord^.SA.Add('3'); ARecord^.SA.Add('4'); ARecord^.SA.Add('5'); MyList.Add(ARecord); New(ARecord); ARecord^.SA.Add('11'); ARecord^.SA.Add('12'); ARecord^.SA.Add('13'); ARecord^.SA.Add('14'); ARecord^.SA.Add('15'); MyList.Add(ARecord); finally MyList.Free; end; end; end. |
#2
|
||||
|
||||
Efectivamente, si no instancias La TStringList, te dará error. A parte de eso, ese código o único que va a hacer es ir dejando tus AList en memoria y sin nadi que apunte a ellos. Lo que quería decir Cadetill era algo así:
Código:
type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); end; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var Temp: TStringList; ObjList: TObjectList; i, j: integer; begin ObjList := TObjectList.Create; try Temp := TStringList.Create; Temp.Add('1'); Temp.Add('2'); Temp.Add('3'); Temp.Add('4'); Temp.Add('5'); ObjList.Add(Temp); Temp := TStringList.Create; Temp.Add('11'); Temp.Add('12'); Temp.Add('13'); Temp.Add('14'); Temp.Add('15'); ObjList.Add(Temp); for i := 0 to ObjList.Count - 1 do for j := 0 to TStringList(ObjList[i]).Count - 1 do ShowMessage(TStringList(ObjList[i]).Items[j]); finally ObjList.Free; end; end; end.
__________________
E pur si muove |
#3
|
|||
|
|||
Perfecto era lo q queria aunque me da un error en la linea ShowMesage en items y pone Undeclared identifier: 'Items'
|
#4
|
||||
|
||||
Perdon, la propiedad no se llama Items, sino Strings :P
__________________
E pur si muove |
#5
|
|||
|
|||
hola Me prodriais ayudar a analizar esta linea?
ShowMessage(TStringList(ObjList[i]).strings[j]); type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); end; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var Temp: TStringList; ObjList: TObjectList; i, j: integer; begin ObjList := TObjectList.Create; try Temp := TStringList.Create; Temp.Add('1'); Temp.Add('2'); Temp.Add('3'); Temp.Add('4'); Temp.Add('5'); ObjList.Add(Temp); Temp := TStringList.Create; Temp.Add('11'); Temp.Add('12'); Temp.Add('13'); Temp.Add('14'); Temp.Add('15'); ObjList.Add(Temp); for i := 0 to ObjList.Count - 1 do for j := 0 to TStringList(ObjList[i]).Count - 1 do ShowMessage(TStringList(ObjList[i]).strings[j]); finally ObjList.Free; end; end; end. Es que no logro entenderla. En principio seria linea tendria de ser: ShowMessage(ObjList[1].strings[1]); Comentarmela por favor |
#6
|
|||
|
|||
Bueno, veo que marto sí que me entendió
Veamos, la linea que te ha puesto marto. Código:
ShowMessage(TStringList(ObjList[i]).strings[j]); Por pasos: 1.- ObjList[i] -> accedemos a un objeto (sin saber cual) 2.- TStringList(ObjList[i]) -> casteamos el objeto a un TStringList ya que sabemos que lo es 3.- TStringList(ObjList[i]).strings[j] -> accedemos a una de las propiedades de este objeto (el StringList) De echo, si quitas el casteo e intentas compilar... creo que te va a dar un error muy chulo Espero te sirva |
#7
|
|||
|
|||
Joder... q bien explicao.
Muchas gracias. |
|
|
|