![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
#1
|
|||
|
|||
TStringList
Buenos dias foreros. Un compañero comento q lo mejor para leer un txt pa riba era utilizar un TStringList y va de muerte. Lo q quiero hacer es lo siguiente:
Leo un DXF q es un archivo de CAD. Este archivo contiene las lineas ,circulos y demas y una cantidad lo detallada. A la vez una linea en concreto contiene su definicion: dode empieza, donde acaba, color, nombre, layer etc y no extrictamente tiene un numero de campos fijo, osea q puede variar dependiento de la complejidad de la linea. LO Q QUIERO HACER Utilizando un TStringList: Un TStringList que contenga un TStringList. En el primero almacenaria los tipos de dibujo: Si es lineas ,Si es circulos, Si es etc. y esta linea, circulo a la vez contiene su definicion que puede tener mas o menos campos. Y sepues como accedo a ese TStringList dentro del TStringList? Pues muchas gracias |
#2
|
|||
|
|||
Quizás te sirva esta idea: un array bidimensional de TStrings donde en el primero almacenarias el tipo de dibujo y en el segundo las características de este
|
#3
|
|||
|
|||
Eso ya. Jo antes lo habia hecho con arrays pero lo quiero hacer lo TStringList porque tiene mogollon de metodos, eventos etc.
Gracias |
#4
|
|||
|
|||
No, si no te estaba diciendo de no hacerlo con TStringList
![]() A parte de eso, tienes clases estilo a los TStrings que pueden servirte para almacenar los 2 TStrings que necesitas TList (unit Classes) TObjectList (unit Contnrs) TComponentList (unit Contnrs) Míratelos en la ayuda y escoge el que más te guste si no te gusta lo del array de TStrings (o TStringList) ![]() |
#5
|
|||
|
|||
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. |
#6
|
||||
|
||||
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 |
![]() |
|
|
![]() |
|