santiago14,
Cita:
Empezado por santiago14
...tengo un StringList y quiero ponerle un valor y un objeto...pero a la hora de visualizarlo..devuelve basura...¿Qué estoy haciendo mal?...
|
Revisa estas variantes al código propuesto en el
Msg #2 y que siguen la línea de
diversas opciones propuestas en este hilo a tu requerimiento:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
public
end;
TData = Class(TObject)
Item : String;
Objeto : string;
end;
TReg = Record
Item : String;
Objeto : string;
End;
const
A1 : Array[0..3] of String = ('Item-1', 'Item-2', 'Item-3', 'Item-4');
A2 : Array[0..3] of String = ('Objeto-1', 'Objeto-2', 'Objeto-3', 'Objeto-4');
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
List : TList;
i : Integer;
S1, S2 : String;
Data : TData;
begin
List := TList.Create;
for i := 0 to 3 do
begin
Data := TData.Create;
Data.Item := A1[i];
Data.Objeto := A2[i];
List.Add(Data)
end;
for i := 0 to List.Count - 1 do
begin
S1 := TData(List.Items[i]).Item;
S2 := TData(List.Items[i]).Objeto;
ShowMessage( S1 + ',' + S2);
end;
for i := 0 to List.Count - 1 do
TData(List.Items[i]).Free;
List.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
SL : TStringList;
i : Integer;
S1, S2 : String;
begin
SL := TStringList.Create;
for i := 0 to 3 do
SL.Add(A1[i] + '=' + A2[i]);
for i := 0 to 3 do
begin
S1 := SL.Names[i];
S2 := SL.ValueFromIndex[i];
ShowMessage( S1 + ',' + S2);
end;
SL.Free;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
A3 : Array of TReg;
i : Integer;
S1, S2 : String;
begin
for i := 0 to 3 do
begin
SetLength(A3,Length(A3)+1);
A3[High(A3)].Item := A1[i];
A3[High(A3)].Objeto := A2[i];
end;
for i := Low(A3) to High(A3) do
begin
S1 := A3[i].Item;
S2 := A3[i].Objeto;
ShowMessage( S1 + ',' + S2);
end;
Finalize(A3);
end;
end.
El código anterior en Delphi 7 bajo Windows 7 Professional x32,
ejemplifica diferentes métodos para el manejo de listas de datos.
Nota: La entrada de datos es simulada con
los arreglos de constantes A1 y A2 para facilitar las pruebas del código propuesto.
Espero sea útil
Nelson.