Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error en el recuento de un Array (https://www.clubdelphi.com/foros/showthread.php?t=88345)

bulc 22-05-2015 19:53:09

Error en el recuento de un Array
 
Llevo toda la tarde y no consigo ver dónde está el error. El array de Label's me da un indice sin nombre y con un elemento de más.
Un Label aparece desplazado en medio de la pantalla. Lo he comparado con otro que funciona bien y nada. Me rindo... por hoy.
A ver si vosotros veis el gazapo... Echádle un vistazo, por favor.
Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);  // Shuffle Shape's & Label's
var
  i, a, b: Integer;   AuxLbl, AuxShp: TPoint;
begin
//ShowMessage( IntToStr( Length(Label_A)) +'  ' + IntToStr( Length(Label_A)) +'  '+ IntToStr( Length(Label_A)) );   // Muestra 25!!!
Randomize;
  for i:= Low(Label_A) to High(Label_A) - 1  do
  begin
    a:= Random(High(Shape_A)+ 1);
    b:= Random(High(Shape_A)+ 1);

    AuxShp:= Point(Shape_A[a].Left, Shape_A[a].Top);
    AuxLbl:= Point(Label_A[a].Left, Label_A[a].Top);

    Shape_A[a].Left:= Shape_A[b].Left;
    Shape_A[a].Top := Shape_A[b].Top;

    Label_A[a].Left:= Label_A[b].Left;
    Label_A[a].Top:= Label_A[b].Top;

    Shape_A[b].Left:= AuxShp.X;
    Shape_A[b].Top := AuxShp.Y;

    Label_A[b].Left:= AuxLbl.X;
    Label_A[b].Top := AuxLbl.Y;

end;

Memo2.Clear;
for I :=0 to High(Shape_A) do
begin
   Memo2.Lines.Add( 'Shape:' +InttoStr(I) + ' ' + Shape_A[i].Name + '  left  ' +   InttoStr( Shape_A[i].Left)
      +' Top ' + InttoStr( Shape_A[i].Top)  );
end;
for I := 0 to High(Label_A) do
Memo1.Clear;
for I := 0 to High(Label_A) do
  begin
  // El Indice, érroneamente, va de 0 ->24 = 25 Labels y aparece el índice 22 sin nombre, con el Top erróneo.
    Memo1.Lines.Add( 'Index: ' +IntToStr(I)  + ' ' +Label_A[i].Caption +'  Left   '+
      IntToStr(  Label_A[i].Left )+' Length '+ IntToStr(Length(Label_A))+'  T '+  IntToStr(  Label_A[i].Top )  ) ;
  end;
end;
////////////////////////////////////////////////////////
Muchas gracias por el esfuerzo. Si hace falta más código, lo envío.
Saludos.
Bulc

Al González 22-05-2015 22:09:24

OK. Pero, para no rendirnos, di de qué va el asunto... :)

mamcx 22-05-2015 23:02:41

"Uno de estos ciclos, no es como los otros, es diferente de todos los demas..."

Cantado con este estilo:

https://www.youtube.com/watch?v=_JvSBkVMSn0

P.D: Mirar que es igual, que es diferente, es basico de la depuracion ;)

bulc 23-05-2015 10:28:50

Otro día sigo...
 
Hago un recorrido a los componentes de tipo TLabel en una aplicación y me devuelve uno de más.

mamcx 23-05-2015 18:07:31

No cojiste la indirecta? El problema esta en los ciclos, no siguen el mismo patron.

bulc 23-05-2015 18:35:47

Envío el error ... en un fichero .jpg
 
1 Archivos Adjunto(s)
Cita:

Empezado por mamcx (Mensaje 492457)
No cojiste la indirecta? El problema esta en los ciclos, no siguen el mismo patron.

Espero que haya pegado la imagen correctamente... soy novato. Si te fijas, en el índice 22 pega un salto. Eso hace que uno de los TLabel ( el llamado DENTON10 se quede desplazado y fuera de lugar. Lo del ciclo no lo entiendo.

Casimiro Notevi 23-05-2015 18:54:28

Una pista:



La franja horaria es GMT +2. Ahora son las 15:22:06.

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