Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problemas con array (https://www.clubdelphi.com/foros/showthread.php?t=71913)

JLMN22 18-01-2011 13:32:17

Problemas con array
 
Hola, hace poco tiempo que trabajo con delpi y me encuentro en la siguiente tesidura. Tengo que hacer un ejercicio con un array y el componente list box. Lo que tengo que hacer es capturar 5 nombres y añadirlos a una lista y meterlos en otra. Tengo 2 paneles y una lista en cada uno, 1 edit y 2 botones, el primero es inserta, inserta los nombres que yo le ponga en una lista y el procesar los mete en la otra, os dejo todo el codigo, llevo 2 horas buscando el fallo sin encontrarlo.
Código Delphi [-]
var
  Form1: TForm1;
  productos: array [1..5] of string[10];
  ren:integer=1;

implementation

{$R *.dfm}

procedure TForm1.InsertarClick(Sender: TObject);
begin
   if ren>=5 then  
   begin
     productos[ren]:=edit1.Text;
     listbox1.Items.Add(productos[ren]);
     ren:=ren+1;  edit1.text:= ' '
   end;
   if (ren=6) then showmessage ('Lista llena');
end;

procedure TForm1.ProcesarClick(Sender: TObject);
var 
  prueba:integer;
begin
  for prueba:=1 to 5  do
    listbox2.Items.Add(productos[prueba])
end;

end.

coso 18-01-2011 13:46:01

Hola,

Código Delphi [-]
if ren<=5 then begin

no he acabado de mirar el codigo, quiza tengas algun otro error. Saludos.

ecfisa 20-01-2011 06:51:10

Hola JLMN22 y bienvenido.

Te recomiendo aprender el uso de las [ etiquetas vB ] ya que facilíta mucho la lectura del código.

Además del error que te menciona el amigo coso (que es el fundamental), el código te va a dar un mensaje de 'Lista llena' cuando termines de ingresar el quinto dato y agrega un espacio al principio de cada dato a partir del primero.
Al estar productos y ListBox1 almacenando los mismos datos, alguno pareciera innecesario. Ya que se podría transferir ListBox1 a ListBox2 directamente sin mediar el arreglo, pero es sólo una observación ya que el código funcionará igualmente.

Código Delphi [-]
...
const
  MAX = 5;

var
  Form1: TForm1;
  productos: array [1..MAX] of string[10]; 
  ren:integer=1;

implementation  {$R *.dfm}

procedure TForm1.InsertarClick(Sender: TObject);
begin
  if ren <= MAX then
  begin
    productos[ren]:= Edit1.Text; 
    ListBox1.Items.Add(Edit1.Text);
    Inc(ren);
    Edit1.text:= ''
  end
  else
    ShowMessage ('Lista llena');
end;

procedure TForm1.ProcesarClick(Sender: TObject);
begin
  ListBox2.Items.Assign(ListBox1.Items);
end;

Un saludo.


La franja horaria es GMT +2. Ahora son las 12:49:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi