DDE con excel

02/08/2005 - 23:28 por tinchoflores | Informe spam
Tengo un problema con la ejecución de un comando para la transacción
de DDE (Dinamic Data Exchange) entre C++ y Excel.
Al ejecutar el siguiente comando:
[FORMULA("hola","R1C1")]
este funciona en la transacción, ya que en excel lo reconoce, pero
ahora si ese 'hola' tiene mas de 232 caracteres ya que sumando el
tamaño de [FORMULA("","R?C?")] (en caracteres) es mas de 256
caracteres, ahora, cómo hago para que excel me reconozca mas de 256
caracteres?, qué puedo adicionar a este comando?
Gracias.
 

Leer las respuestas

#1 Héctor Miguel
03/08/2005 - 06:50 | Informe spam
hola, tinchoflores !

... problema con la ejecucion de un comando para la transaccion de DDE (Dinamic Data Exchange) entre C++ y Excel.
... el... comando: [FORMULA("hola","R1C1")]... funciona en la transaccion, ya que en excel lo reconoce
... si ese 'hola' tiene mas de 232 caracteres... sumando... [FORMULA("","R?C?")]... es mas de 256 caracteres
... como hago para que excel me reconozca mas de 256 caracteres? [...]



la razon [probablemente] es que excel solo 'acepta' un maximo de 256 caracteres desde las llamadas a librerias DDE
[sin tomar en cuenta si la cadena que 'devuelve' la funcion de llamada a la libreria es mayor en bytes/caracteres] -p.e.-
-> los tipos de datos F y G que se asignaban a los argumentos al registrar funciones DDE [xl97 ANTES de actualizar]
-> que en lenguaje C se declara[ba]n -normalmente- como 'char' o 'unsigned char'
-> F / char -> cadena que terimina con un caracter 'nulo' [le restan 255 caracteres 'disponibles']
-> G / unsigned char -> el primer byte contiene el numero de caracteres de la cadena [le restan 255 'disponibles']
-> aunque una funcion que utilice los tipos de datos F y G puede modificar -en su posicion- el bufer 'asignado'...
excel [pasando por alto el valor devuelto] busca el tipo de datos correspondiente y usa en contenido del bufer PERO...
con la 'limitante' de los 256 caracteres 'maximos' MENOS el byte 'indicador' [inicial o final segun el tipo de datos F/G]
[segun parece] 255/256 es un numero 'mistico' en excel [incluso en llamadas a las API's de windows -p.e. directorios?-]

como las llamadas 'personalizadas/registrables' a librerias DDE dejaron de tener soporte en las ultimas actualizaciones [xl97]
no estoy muy seguro que se pueda encontrar [por algun sitio] una -posible- forma de hacer un 'by-pass' -?-
[creo que valdria la pena hacer una busqueda] ;)

saludos,
hector.

Preguntas similares