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 12-09-2003
rafadrover rafadrover is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mallorca
Posts: 48
Poder: 0
rafadrover Va por buen camino
Punteros

Hola amigos, estoy intentando hacer lo siguiente, tengo una classe mapa_de_bits, por ejemplo, y otra classe con un metodo modifica_mapa_bits, lo que estoy intentando realizar es crear 3 objectos que tienen el metodo modifica_mapa_bits, i pasarles un objeto mapa_de_bits para que estos me lo modifiquen, de manera que si uno me lo modifica, estos cambios se reflejen en totdos los demas.
Para ello he intentado utilizar punteros, pero no me ha ido muy bien, igualmente tendira que usar memoria compartida, no se, si alguien me podia dar unas nociones de como poder hacer esto mediante punteros, se lo agradeceria.

Gracias.
Responder Con Cita
  #2  
Antiguo 12-09-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

No acabo de entender bien tu pregunta. Tienes 3 objetos con un método modifica_mapa_bits, supongo que heredan de una clase común, aunque esto es lo de menos.

Cita:
...de manera que si uno me lo modifica, estos cambios se reflejen en totdos los demas.
¿Que se pretende, que cuando se pase un mapa_de_bits a uno de estos objetos, los otros dos tengan constancia de ello, o que el mapa_de_bits sea pasado a los tres objetos para que cada uno haga su modificación pertinente sobre el mismo?
__________________
Guía de Estilo
Responder Con Cita
  #3  
Antiguo 12-09-2003
rafadrover rafadrover is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mallorca
Posts: 48
Poder: 0
rafadrover Va por buen camino
Aclarare el concepto:

Código:
type tmapa_bits = class (TObject)
    array de bits
end;

type tmodificador = class (TObject)
    procedure moficica_mapa (mapa: tmapa_bits);
end;

mapa_bits:=Tmapa_bits.create;

mod1:=tmodificador.create;
mod1.modifica_mapa(mapa_bits);

mod2:=tmodificador.create;
mod2.modifica_mapa(mapa_bits);

mod3:=tmodificador.create;
mod3.modifica_mapa(mapa_bits);
Lo que quiero hacer es que los tres modificadores accedan a la misma region de memoria i que modifiquen el mismo objeto tmapa_bits.
Responder Con Cita
  #4  
Antiguo 12-09-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

El código lo veo perfecto, los tres modificadores actúan sobre el mismo mapa_de_bits, por lo tanto no veo que se acceda a direcciones de memoria diferentes.

?¿
__________________
Guía de Estilo
Responder Con Cita
  #5  
Antiguo 12-09-2003
rafadrover rafadrover is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mallorca
Posts: 48
Poder: 0
rafadrover Va por buen camino
Soy novato en esto de Delphi, lo que me estas diciendo es que a los tres metodos les paso un puntero a la estructura, o se hace un paso por valor y no por referencia?
Responder Con Cita
  #6  
Antiguo 12-09-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

Si tu inquietud gira en torno a eso, puedes estar tranquilo. Cualquier variable que declares del tipo Objeto (cualquier objeto) es en realidad un puntero, por lo que cuando pasas un objeto como parámetro a una Función / Procedure, sea por valor o por referencia, SIEMPRE pasas una referencia al objeto, con lo cual puedes manipularlo a tu antojo dentro de la función.

En los tres casos que propones, se accederá al mismo objeto, el referenciado por la variable mapa_de_bits.
__________________
Guía de Estilo
Responder Con Cita
  #7  
Antiguo 12-09-2003
rafadrover rafadrover is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mallorca
Posts: 48
Poder: 0
rafadrover Va por buen camino
Perfecto, pues esto funciona como Java, entonces si modifico la misma region de memoria tocarian reflejarse las modificaciones. Investigaré por que no me funciona, gracias por tu hayuda.
Responder Con Cita
  #8  
Antiguo 12-09-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
¿No te sería mas cómodo que moficica_mapa sea un método de tmapa_bits?...
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 18-09-2003
rafadrover rafadrover is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mallorca
Posts: 48
Poder: 0
rafadrover Va por buen camino
Conceptualmente es mejor lo que tu dices, de todas maneras solamente era un ejemplo, esta claro que modifica mapa de bits utiliza metodos de tmapa. Ya que el que sabe como modificar el mapa es el "modificador". De todas maneras ya esta todo solucionado, al ser punteros a la misma zona.
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


La franja horaria es GMT +2. Ahora son las 08:49:21.


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