Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2006
metalfox6383 metalfox6383 is offline
Miembro
 
Registrado: jul 2005
Posts: 97
Poder: 19
metalfox6383 Va por buen camino
Question Problema al cerrar programa con matriz de objetos.

Hola:

He creado un programa que hace una matriz de objetos del tipo TLabel. Creo los objetos y los distribuyo en el formulario. Pero cuando ejecuto mi formulario, al querer intentarlo (es decir, cerrar mi programa) me sale siempre un error que dice: 'Invalid Pointer operation'.

¿A qué se refiere? ¿Cómo soluciono el problema?

Gracias.
Responder Con Cita
  #2  
Antiguo 30-06-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Puedes poner un fragmento de cómo los creas y cómo los destruyes?

// Saludos
Responder Con Cita
  #3  
Antiguo 30-06-2006
metalfox6383 metalfox6383 is offline
Miembro
 
Registrado: jul 2005
Posts: 97
Poder: 19
metalfox6383 Va por buen camino
Question

Ok.

Tfm_Principal = class(TForm)
procedure FormCreate(Sender: TObject);
private
//declaro la matriz.
mt_NumeroA: array of TLabel;
public
{ Public declarations }
end;

var
fm_Principal: Tfm_Principal;

implementation
{$R *.dfm}

procedure Tfm_Principal.FormCreate(Sender: TObject);
var conteo: byte;
begin
//creo los objetos.
setlength(mt_NumeroA,7);
for conteo:=0 to 7 do begin
mt_NumeroA[conteo]:= TLabel.Create(nil);
mt_NumeroA[conteo].Parent:=fm_Principal;
mt_NumeroA[conteo].Caption:=inttostr(conteo);
mt_NumeroA[conteo].Left:=5;
mt_NumeroA[conteo].Top:=15+15*conteo;
end;
end;
end.

No sé cómo debo destruirlos. He destruido otros objetos, pero nunca intenté con matrices.
Responder Con Cita
  #4  
Antiguo 30-06-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A bote pronto veo un error: creas un arreglo de 7 elementos pero asignas 8 (0..7).

Ahora, todos esos objetos tienes que destruirlos o poco a poco perderás memoria. Puedes, al término del programa (evento OnDestroy del formulario) recorrer con un ciclo el arreglo aplicando el método Free de cada objeto. O bien puedes construir los objetos con

Código Delphi [-]
mt_NumeroA[conteo]:= TLabel.Create(Self);

De esta manera estás indicando que Self (el formulario en este caso) es el "dueño" del objeto creado. Los dueños se encargan en automático de destruir a sus componentes.

// Saludos
Responder Con Cita
  #5  
Antiguo 30-06-2006
metalfox6383 metalfox6383 is offline
Miembro
 
Registrado: jul 2005
Posts: 97
Poder: 19
metalfox6383 Va por buen camino
¡Funcionó! ¡Ya no sale el error! Gracias por tu ayuda, estaba creando 8 objetos, pero mi variable tenía una longitud de 7.

Gracias una vez más.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Opcion de cerrar el programa ilichhernandez OOP 5 09-06-2006 10:15:19
Matriz de objetos en Delphi metalfox6383 Varios 14 30-12-2005 18:33:30
Cerrar el programa al acabar un thread tortelini API de Windows 2 07-04-2005 22:26:18
Cerrar mi programa desde otro Sr_Sombrero API de Windows 2 02-12-2004 22:12:09
Liberar un matriz de objetos soul6301 Varios 8 04-08-2004 09:19:53


La franja horaria es GMT +2. Ahora son las 06:28:47.


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
Copyright 1996-2007 Club Delphi