Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 17-01-2011
Avatar de yapt
yapt yapt is offline
Miembro
 
Registrado: sep 2006
Ubicación: España
Posts: 258
Poder: 20
yapt Va por buen camino
Cita:
Empezado por Crandel Ver Mensaje
Tu codigo tiene muchos errores por varios lados.

Para eliminar varios al mismo tiempo te aconsejo utilizar la clase TList en vez de array dinámico.
Hola Crandel. Ya decia en mi primer mensaje que ya está funcionando correctamente usando una Lista (concretamente un TObjectList).

Agradecería, no obstante, saber cuales son esos errores.

Cita:
Empezado por Crandel Ver Mensaje
Por otro lado al asignar los elementos tienes:

Código Delphi [-]
Value := TColumnaDict.Create;
  try
    AnadeValores(Value, 'uno', 'el uno', false);
    AnadeValores(Value, 'dos', 'el dos', true);
    FColMant.AddColumna(Value);
  finally
    Value.Free;
  end;



aca lo que estas haciendo es crear el objeto TColumnaDict asignarle valores y agregarlo a FColMant, hasta aca todo bien, pero luego lo destruyes !!!
Olvidas un paso:
FColMant.AddColumna(Value);

Este paso, copia la Colección a la nueva colección que se crea internamente, dentro de la clase.

Cita:
Empezado por Crandel Ver Mensaje
Tienes que entender que Delphi al pasar objetos como parametros no crea una nueva instacia (copia) de ellos, sino solamente pasa el puntero, por lo que el objeto sigue siendo el mismo, asi que al destruirlo, destruiste el objeto que pasaste.

Donde obtienes el error es porque intentas de volver a destruir el objeto ya destruido
Gracias Crandel, creo que entiendo minimamente la forma de trabajo de Delphi y su paso de objetos.

Pero debo insistir, el "truco" de esta clase está en:

Código Delphi [-]
  if Value = nil then
    FColumnas[result] := TColumnaDict.Create
  else
    FColumnas[result] := TColumnaDict.Create(Value);

Donde la segunda forma de crear el objeto TColumnaDict, realiza una copia del objeto Value.

Si fuese de otro modo, en el test, el método:

Código Delphi [-]
 
TestValueAddedByTestAddColumna0

No funcionaría. Y si habeís pasado el test, todos ellos funcionan con normalidad (y he comprobado que sin ningún Memory Leak), excepto el método del TestCase:
Código Delphi [-]
 
TestDelColumnaStandAlone
y por tanto, el método de la clase:
Código Delphi [-]
    function DelColumna(index: Byte): Boolean;

Gracias por la respuesta..

Un saludo.

Última edición por yapt fecha: 17-01-2011 a las 08:58:18. Razón: Aclaración y corrección
Responder Con Cita
 



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
Invalid Pointer Operation FerCastro Varios 3 23-02-2010 21:47:26
Invalid Pointer operation Dll mcarazas Varios 2 15-10-2008 21:45:14
Invalid Pointer operation Dll mcarazas Varios 0 15-10-2008 16:42:23
invalid pointer operation muppett Varios 1 05-03-2008 00:17:55
QR - Invalid Pointer Operation alapaco OOP 6 07-06-2006 22:43:31


La franja horaria es GMT +2. Ahora son las 00:25:14.


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