C/Visual C - Pasar El Texto De Un RichTextBox A Una Dll

 
Vista:

Pasar El Texto De Un RichTextBox A Una Dll

Publicado por Eduardo Negrete (76 intervenciones) el 31/10/2006 15:19:48
Hola que tal!!

Publico mi problema en este foro ya que tiene que ver tanto de c como de visual basic
y pues haber si alguien me puede ayudar.

Quisiera saber si es posible pasar el texto de un richtextbox a una libreria que hice en c y desde ahi poder modificar algunos valores.

int WINAPI PasarCadena( char *Cadena, int Longitud )

esta es la funcion que hice para la libreria en c, y para leer la cadena no tengo problemas pero si le quiero modificar algun valor de la cadena, simplemente no me modifica nada.

No se si tendra que ver con algo del control del richtextbox o que estoy haciendo mal.

Public Declare Function PasarCadena Lib "Libreria" (ByVal Cadena As String, ByVal Longitud As Long) As Long

Se me pasaba algo, por ejemplo si paso una variable tipo string a mi funcion puede tanto leerla como modificarla pero si quiero pasar el Richtexbox.Text solo puedo leerlo mas no modificarlo.

Podria hacer una funcion directamente en visual basic pero para la aplicacion que lo quiero esto se me hace muy lento.

Espero me puedan ayudar

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:Pasar El Texto De Un RichTextBox A Una Dll

Publicado por fernando.gomez (1603 intervenciones) el 31/10/2006 23:56:09
Ahm... ¿Sabes lo que en realidad significa eso de ByVal Cadena As String? Es decir, ¿sabes lo que es un String en Básic?

Una cadena en Basic, un String, es un conjunto de caracteres contiguos en memoria (caracteres Unicode, por cierto, de dos bytes cada uno) que encuentra su fin cuando encuentra dos bytes seguidos cuyo valor es 0: el caracter nulo. Si recuerdas bien la definición de una cadena de caracteres en C, es un vector de caracteres -conjunto de caracteres contiguos en memoria- que encuentra su fin cuando encuentra __*UN*__ byte cuyo valor sea 0, el caracter nulo.

Como ves, el tipo de dato es incompatible. El tipo de dato que corresponde al String de VB, en C, se llama BSTR. Puedes emplear las funciones SysAllocString y SysFreeString para asignar valores y liberarlos. Además, puedes emplear las funciones OLE2T y T2OLE para convertir entre BSTR's y LP(C)TSTR's. Finalmente, existe la clase _b_str_ en C++ para todo lo anterior.

Yo creo que el problema va por ahí. Recuerda que cualquier objeto en VB es un componente COM, y lo tienes que tratar como tal si deseas trabajar desde cualquier otro lenguaje.

Saludos.
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