Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Punteros (https://www.clubdelphi.com/foros/showthread.php?t=3591)

rafadrover 12-09-2003 10:00:29

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.

andres1569 12-09-2003 11:37:44

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?

rafadrover 12-09-2003 12:36:14

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.

andres1569 12-09-2003 13:13:24

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.

?¿

rafadrover 12-09-2003 13:33:24

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?

andres1569 12-09-2003 13:43:10

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.

rafadrover 12-09-2003 13:54:39

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.

delphi.com.ar 12-09-2003 15:50:39

¿No te sería mas cómodo que moficica_mapa sea un método de tmapa_bits?...

rafadrover 18-09-2003 10:09:47

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.


La franja horaria es GMT +2. Ahora son las 22:07:45.

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