elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Char[] != String
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Char[] != String  (Leído 10,957 veces)
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Char[] != String
« en: 7 Agosto 2007, 15:14 pm »

Pues eso, creo que es el problema que me pasa al intentar apsar parametros de tipo char[] a una Dll echa en VB siguiento el siguiente texto (http://www.elguille.info/vb/avanzado/crear_dll_windows_con_vb6_explicado.htm).

Al pasarle numeros no hay ningun problema, pero al pasarle cadenas me da un error y se cierra el programa.

Creo que es por lo que e dicho, que el tipo char[] no es igual al tipo string del VB y por eso da el error.

El error me pasa al intentar llamarlo asi desde el C++:

Código
  1. Saludo("Hola desde C++");

Alguna sugerencia??? :-\



En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
EvilGoblin


Desconectado Desconectado

Mensajes: 2.323


YO NO LA VOTE!


Ver Perfil
Re: Char[] != String
« Respuesta #1 en: 7 Agosto 2007, 19:23 pm »

habria q ver como esta la DLL y q tipo de datos admite...

prueba pasar un puntero   

^^ como es la funcion de la dll?


En línea

Experimental Serial Lain [Linux User]
Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.590


Shrödingerificado


Ver Perfil
Re: Char[] != String
« Respuesta #2 en: 7 Agosto 2007, 21:44 pm »

Lo tienes que declarar como Byte()

http://msdn2.microsoft.com/es-es/library/thwcx436(VS.80).aspx
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Char[] != String
« Respuesta #3 en: 8 Agosto 2007, 14:31 pm »

Pero eso es para .Net, no???? Yo lo quiero hacer en C/C++  :-\ :-\

PD: Utilizo los mismos ejemplos que en el de la pagina que puse en el primer post excepto que en la Dll meto esto:

Código
  1. Option Explicit
  2.  
  3. Public Function Saludo(texto As String)
  4. MsgBox texto
  5. End Function

Un Saludo :)
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.590


Shrödingerificado


Ver Perfil
Re: Char[] != String
« Respuesta #4 en: 8 Agosto 2007, 21:15 pm »

¿Y que pasa si pones esto?

Código
  1. Option Explicit
  2.  
  3. Public Function Saludo(texto() As Byte)
  4. MsgBox texto
  5. End Function
« Última modificación: 8 Agosto 2007, 21:17 pm por Ragnarok » En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Char[] != String
« Respuesta #5 en: 9 Agosto 2007, 00:05 am »

tampoco funciona.... :-\ :-\
En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Char[] != String
« Respuesta #6 en: 9 Agosto 2007, 00:15 am »

Yo nunca he podido hacer una dll con visual basic a ver quien me pasa un source para saber si es posible,...

He intentado mil veces y fallo...

Edito:

Se me olvidaba:

Por Favor
En línea

Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.590


Shrödingerificado


Ver Perfil
Re: Char[] != String
« Respuesta #7 en: 9 Agosto 2007, 00:40 am »

Vale, había que probar :P

Aunque eso tampoco funcione, si no te da errores de compilación ni de otro tipo, yo lo dejaría porque por el enlace que he puesto antes yo diría que es la forma en que tiene que ser.

Lo único que se me ocurre es que el puntero vaya a la zona de datos del programa al introducir la cadena como una constante y que por eso dé error. Es posible que la dll no tenga permiso para acceder a esa región de memoria, aunque es posible también que no tenga permiso para acceder a ninguna región de memoria del programa y tengas que usar sockets, pipes o algo parecido, no sé exactamente cómo funcionan los permisos con las dlls.

Así que puedes probar a hacer un malloc y strncpy para guardar la cadena en una región de memoria del heap, que será lo que te dé el malloc. Si eso no funciona puedes probar a usar memoria compartida y si no funciona o no quieres la última alternativa serían sockets, pipes o el mecanismo de comunicación entre procesos que prefieras. En este último caso la llamada iría sin argumentos.

-Freeze-, ¿has mirado el link que ha dado Hendrix.?
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Char[] != String
« Respuesta #8 en: 9 Agosto 2007, 00:49 am »

Obviamente si y desde hace tiempo...

Pero nada... Cuando la llamo desde otro programa me dice que falta el Entry-Point..
En línea

skapunky
Electronik Engineer &
Colaborador
***
Desconectado Desconectado

Mensajes: 3.667


www.killtrojan.net


Ver Perfil WWW
Re: Char[] != String
« Respuesta #9 en: 9 Agosto 2007, 02:45 am »

Citar
Creo que es por lo que e dicho, que el tipo char[] no es igual al tipo string del VB y por eso da el error.

El error me pasa al intentar llamarlo asi desde el C++:

Esacto...Yo lo aclaro. El tipo char , yo almenos que programo en pascal se utiliza muy poco y este es solo para declarar de variable una letra, no soporta una cadena de letras, ya que para eso existe string.

Conclusión: Char es para solo una letra.

Se preguntaran, entonces para que sirve char? pues por ejemplo yo hice un programa en pascal con un menu, donde el menu se definia con letras de la A a la F...Entonces, si por el teclado entrava la A se ejecutava la primera opcion del menu...Etc..

Intenten no trabajar con char... Solo sirve para cosas bastante específicas.

Saludos.
En línea

Killtrojan Syslog v1.44: ENTRAR
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[?] cambiar una comparacion de const char * a metodo string.compare
Programación C/C++
Drakomorh 2 3,906 Último mensaje 25 Mayo 2011, 18:58 pm
por Littlehorse
comparacion de un string con char en java
Java
sauce19 9 13,208 Último mensaje 23 Agosto 2011, 17:39 pm
por someRandomCode
Problema con STRTok, Char y String [C++]
Programación C/C++
ZedGe 6 6,541 Último mensaje 27 Diciembre 2011, 20:08 pm
por ZedGe
[C] Error Conversión String to Char
Programación C/C++
MeCraniDOS 3 3,531 Último mensaje 31 Marzo 2013, 18:31 pm
por avesudra
Convertir un string a char
Programación C/C++
nolasco281 4 4,999 Último mensaje 11 Marzo 2014, 03:07 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines