Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-02-2008
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 27
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Pues yo insisto con lo del loop-back
Responder Con Cita
  #2  
Antiguo 18-02-2008
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 24
Mick Va por buen camino
Busca en google "delphi shared memory" y encontraras documentacion de sobra,
por ejemplo:

http://www.eagle9.nl/main/Programmin.../ProgShMem.asp

Saludos
Responder Con Cita
  #3  
Antiguo 18-02-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Mick Ver Mensaje
Busca en google "delphi shared memory" y encontraras documentacion de sobra,
por ejemplo:

http://www.eagle9.nl/main/Programmin.../ProgShMem.asp

Saludos
El tema es muy interesante. Cuando tenga un rato experimentaré. Promete ser una buena solución y no muy compleja.

Gracias.
Responder Con Cita
  #4  
Antiguo 19-02-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Correcto shared memory funciona.
He implementado una clase para hacerlo y utilizando esa clase, con dos líneas de programación, consigo comunicar los dos programas con éxito.

El tema del loop-back lo investigaré mas despacio. También parece interesante.

Gracias.

EDITO:

Pero... al pasar punteros tengo problemas si copio sus contenidos en memoria local del proceso.
En el servidor, copio el contenido de un array de texto (char*) al shared memory dimensionado para tal. En el cliente copio esa memoria a un array de dimensión conocida. Si hago este último paso, termino teniendo errores en otras zonas de código, posiblemente por corrupción de memoria. Algo hago mal o no es un buen sistema para pasar arrays. Seguiré investigando.

Última edición por escafandra fecha: 19-02-2008 a las 20:47:31. Razón: Añado comentario
Responder Con Cita
  #5  
Antiguo 19-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Bueno, los elementos del arreglo deben estar "auto contenidos" en la misma zona de memoria compartida. En c un array de texto (char*) es, en realidad, un array de punteros... por lo que volvemos al inciso 1.

Si te las arreglas para que todos los datos estén en la zona compartida, no te dará problemas.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 20-02-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por jachguate Ver Mensaje
Bueno, los elementos del arreglo deben estar "auto contenidos" en la misma zona de memoria compartida. En c un array de texto (char*) es, en realidad, un array de punteros... por lo que volvemos al inciso 1.

Si te las arreglas para que todos los datos estén en la zona compartida, no te dará problemas.

Hasta luego.

Si, si tengo problemas. No paso un array de cadenas (char**) sino una simple cadena (char*) y no paso el puntero, sino su valor, es decir copio el contenido del puntero char* a la memoria compartida. Al otro lado la puedo leer, pero si lo hago.... Corrupción de memoria.

Por otro lado, creo que en algunas ocasiones el sistema puede impedirte la creación de memoria compartida. ¿Puedes hacerlo si el programa corre sin identificarse como administrador?.
Responder Con Cita
  #7  
Antiguo 20-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
No tengo C a mano, y dado que no lo uso mas que eventualmente, no creo ser el mas adecuado para hablar de esto. Pero char* no es un puntero a una cadena terminada en nulo?

Si "copias" el contenido del puntero, lo que estas copiando es eso, el puntero.. que del otro lado, apuntará a una dirección que no existe.

Por que no probás, por ejemplo, en lugar de esto, construir un arreglo de caracteres en la memoria compartida.

Se me hace mas fácil de explicar en pascal: el equivalente al tipo string[x] o a un array[0..x] of char.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
pasar un puntero a una funcion baby Varios 2 21-05-2007 13:10:22
Se Pueden Pasar Form/units de una aplicacion a otra? Alexis De la Cr Varios 8 06-07-2006 19:05:42
Pasar texto de una aplicacion delphi a otra OmarPerez API de Windows 4 13-07-2005 20:56:19
Recibir parametros de otra aplicacion en Delphi Coco_jac Varios 1 30-05-2005 17:43:17
pasar parametros ms-dos desde mi aplicacion ixMike API de Windows 5 13-02-2005 15:56:38


La franja horaria es GMT +2. Ahora son las 13:46:34.


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