Ver Mensaje Individual
  #11  
Antiguo 17-07-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
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
    { Private declarations }
  public
    { Public declarations }
  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}

// Gestión de Listas de Datos por medio de TList y Objetos
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;

// Gestión de Listas de Datos por medio de TStringList (Name = Value)
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;

// Gestión de Listas de Datos por medio de Arreglos Dinámicos y Registros
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.

Última edición por nlsgarcia fecha: 17-07-2014 a las 22:38:34.
Responder Con Cita