Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-07-2006
DelphiRat DelphiRat is offline
Registrado
 
Registrado: jul 2006
Posts: 3
Poder: 0
DelphiRat Va por buen camino
Manejo de Multi-Listas (listas de listas)

Hola a todos.

Estoy haciendo mi trabajo de mi curso Estructuras de Datos y tengo un problema bien grande. Estoy trabajando con listas de enlace doble, en la data de cada nodo de la lista almaceno una lista de enlace simple. Para almacenar esta lista simple creo el objeto ListaSimple y lo almaceno como un campo de un registro que se grabará como data del objeto ListaDoble. Luego, destruyo el objeto ListaSimple y repito el mismo procedimiento para cada nodo de la lista de enlace doble. Todo graba bien.

Mi problema está en acceder después a la data de mi lista de enlace simple en los nodos de la lista de enlace doble. Yo creo un objeto auxiliar para copiar el objeto ListaSimple del registro de un nodo del objeto ListaDoble y poder editarlo (para luego volver a grabarlo), pero esto me genera un AccessViolation al tratar de acceder al objeto auxiliar. ¿quizá este creando mal mi objeto auxiliar?

Este es mi primer post y de verdad necesito ayuda en este tema , es urgente! Gracias.
Responder Con Cita
  #2  
Antiguo 03-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿No puedes ilustrar lo que dices con el código fuente que estás escribiendo? Pienso que puede ayudar a que te ayuden.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 03-07-2006
DelphiRat DelphiRat is offline
Registrado
 
Registrado: jul 2006
Posts: 3
Poder: 0
DelphiRat Va por buen camino
Mi objeto ListaSimple (equivale a oMensajes) es del tipo de estructura de una 'Cola', la función push equivale a insertar_al_final. Mi objeto ListaDoble (equivale a oTemas) es una lista de doble enlace común. Mi varibale nuevoMensaje es del tipo puntero a registro (para guardarse en ListaSimple). Mi variable nuevoTema es del tipo puntero a registro (para guardarse en ListaDoble).

Código Delphi [-]
//Creo objeto ListaSimple...
oMensajes:=cCola.create;
//Inserto campos en el registro que se guardará en ListaSimple...
new(nuevoMensaje);
nuevoMensaje^.mensaje:=MeMensaje.Text;
nuevoMensaje^.autor:=FrmInicio.EdUser.Text;
nuevoMensaje^.fecha:=DateTimeToStr(Today);
//Inserto el registro en ListaSimple....
oMensajes.push(nuevoMensaje);
//Inserto ListaSimple como campo de un registro a ListaDoble...
nuevoTema^.mensajes:=oMensajes;
//Destruyo mi objeto ListaSimple...
oMensajes.destroy;
//Inserto registro (que incluye mi objeto ListaSimple) a ListaDoble...
oTemas.insertar_al_final(nuevoTema);

Mi declaración de mi registro Tema es:

Código Delphi [-]
rTema = record
  ..
  ..
  ..
  mensajes: cCola;
  end;

No hay problema con esa declaración, ¿verdad?

Bueno, ahí está lo importante de mi código. Lo que busco es la sintaxis para leer lo guardado (como se explica en el primer mensaje).
Responder Con Cita
  #4  
Antiguo 03-07-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
A simple vista creo que el problema esta aqui:

Código Delphi [-]
nuevoTema^.mensajes:=oMensajes;
//Destruyo mi objeto ListaSimple...
oMensajes.destroy;

Despues de destruir el objeto oMensajes, nuevoTema^.mensajes hace referencia aun objeto que ya no existe por lo que cualquier intento de acceder a el provocara un error.
Responder Con Cita
  #5  
Antiguo 03-07-2006
DelphiRat DelphiRat is offline
Registrado
 
Registrado: jul 2006
Posts: 3
Poder: 0
DelphiRat Va por buen camino
Gracias. Efectivamente, era así. Al guardar el objeto en el registro hacia que dos punteros apunten a la misma dirección. Entonces cuando destruía el objeto y, al tratar de acceder luego por el otro puntero, me botaba error ya que el puntero me llevaba a algo que ya no existía. Gracias .
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
Ayuda Listas zezeno OOP 1 25-04-2006 21:07:02
Listas ligadas Luli Varios 1 30-05-2005 10:04:26
Manejo de listas Luli Varios 2 22-11-2004 02:09:32
listas dobles Luli Varios 3 08-11-2004 23:14:59


La franja horaria es GMT +2. Ahora son las 03:42:41.


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