Delphi - Punteros Chismosos

 
Vista:

Punteros Chismosos

Publicado por SiOuX (1 intervención) el 04/09/2005 01:55:39
Hola a todos.
Veran, hace menos de un año que empece a estudiar Delphi y hace un tiempo me he interesado por el trabajo con punteros, ya que creo que es algo a lo que se le puede sacar mucho jugo.La cuestion es la siguiente:
Quisiera saber si es posible hacer que un puntero apunte a una variable de otra aplicacion.... y claro, de ser posible me gustaria saber como se hace. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Punteros Chismosos

Publicado por Mr. Sade (76 intervenciones) el 05/09/2005 21:22:58
si es posible que dos programagas apunten a una misma variable mediante el uso de segmentos compartidos, pero esto no lo soporta delphi, visual c++ si.
la unica forma de hacer algo similar en delphi es usando "MMF" o archivos mapeados en memoria.
con esto un programa puede crear un espacio de memoria de X bytes y otro programa puede accesar a su contenido.
fijate en las funciones API CreateFileMapping(), MapViewOfFile(), etc.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros Chismosos

Publicado por mamcx (12 intervenciones) el 06/09/2005 17:05:41
Una correccion:

Todas las API de Windows son accesibles por Delphi. TODAS. Quiere decir que se pueden usar los archivos mapeados, de hecho muchos de la comunidad Delphi que manejan grandes cantidades de datos usan esta tecnica, que es muy habitual

http://www.delphipages.com/news/detaildocs.cfm?ID=100

http://www.efg2.com/Lab/Library/Delphi/IO/Files.htm

http://www.ifm-services.com/people/jamesk/papers/object_pascal/memorymapping.html

Por solo unos ejemplos rapidos de Google.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros Chismosos

Publicado por Mr. Sade (76 intervenciones) el 07/09/2005 02:48:34
es una respuesta para mi ?
si es asi, yo dije que lo podia hacer mediante memory mapped files (archivos de memoria mapeados)

mas facil seria mediante segmentos/secciones compartidas (shared segments) pero ESTO ES LO QUE NO SOPORTA DELPHI y lo que nunca soportara segun tengo entendido. el compilador de Visual C++ si lo soporta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros Chismosos

Publicado por Delfino (1222 intervenciones) el 07/09/2005 13:56:14
Segun tenemos entendido los programadores Delphi, con Delphi se puede hacer de TODO, hasta programar en Assembly...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros Chismosos

Publicado por Mr. Sade (76 intervenciones) el 08/09/2005 05:22:23
si se pueden hacer muchas cosas, pero no todo.
con otros lenguajes basic tambien se pueden hacer tanto como en delphi.
con que tenga soporte de punteros y de llamar a funciones externas se pueden hacer muchas cosas.
pero esto no se trata si se puede usar inline ensamblador... sino del formato PE de los ejecutables que esta conformado por segmentos o mejor dicho secciones, es mas entendible lo de secciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros Chismosos

Publicado por mamcx (533 intervenciones) el 07/09/2005 15:33:10
Tenes razon, re-leyendo el post veo ahora con claridad que habias mencionado lo de los archivos mapeados como una alternativa a las secciones compartidas.

He chequeado el tema y efectivamente Delphi no trae el soporte (simple) para esta caracteristica. Sin embargo segun este thread (y otros datos que mire en google) es posible:

http://groups.google.com.ar/group/borland.public.delphi.objectpascal/browse_thread/thread/858e779d88840b1f/4d01288de97c6cf2?lnk=st&q=delphi+%22shared+data+sections%22&rnum=3&hl=es#4d01288de97c6cf2

Al fin y al cabo es solo marcar un segemento de la DLL como "shared".

Sin embargo, esta tecnica es anticuada (la manera correcta es archivos mapeados) no solo porque viene de la epoca de Win 3.1 sino ademas es un riesgo de seguridad, tal como se detalla en:

http://blogs.msdn.com/oldnewthing/archive/2004/08/04/208003.aspx

Por uno de los mas renombrados ingenieros de MS y de los mas magos con las APIs de windows...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros Chismosos

Publicado por Mr. Sade (76 intervenciones) el 08/09/2005 05:16:32
hay muchas formas de compatir informacion no solo MMF y shared segments.
se que existen trucos para cambiar los atributos de un segmento/seccion a compartido en delphi, pero el problema es que delphi no te permite tener control sobre los segmentos/secciones.
en visual c++ si tienes control absoluto sobre que quieres compartir, y creas un segmento especial (shared) para que no se junte con los otros datos globales.
trata de hacer esto con algunos de esos trucos que segun ponen a los segmentos/secciones como compartidad y veras que es imposible ya que todo el segmento sera compartido, incluyendo la data que no quieres que se comparta.

asi que solo queda usar en delphi MMF, eso es lo que uso en delphi.
en macro ensamblador (el ensamblador de visual c++) uso segmentos compartidos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar