C sharp - stringbuilder

 
Vista:

stringbuilder

Publicado por Jovi (10 intervenciones) el 01/08/2005 10:14:34
Estoy haciendo una aplicación que usa una función de un cliente que importo de la siguiente forma:

[DllImport("cliente.dll",CharSet=CharSet.Ansi)]
public static extern int getDatos(String datos,StringBuilder resultado);

Después tengo el siguiente código:

int ret;
String datos="cadena de caracteres";
StringBuilder resultado= new StringBuilder();
ret=Prueba.getDatos(datos,resultado);
Console.WriteLine(ret);
string respuesta = resultado.ToString();
Console.WriteLine("RESULTADO :"+respuesta);

El problema es que en la variable respuesta me aparecen símbolos raros y sin sentido en vez de la cadena que debería haber. El caso es que la función de la librería cliente.dll funciona y el servidor recibe y envía correctamente las cadenas.
¿Alguien ve algún fallo en el código o tiene alguna otra sugerencia?
Muchas 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:stringbuilder

Publicado por Jovi (10 intervenciones) el 02/08/2005 11:32:40
En C++ y utiliza sockets.
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
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:stringbuilder

Publicado por Yamil Bracho (1164 intervenciones) el 02/08/2005 15:10:10
Ahi esta el problema...!
El objeto StringBuilder no es serializado correctamente y lo otro es que este objeto no existe en C++. Lo que pudieras hacer es retornar un String o un arreglo de bytes
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:stringbuilder

Publicado por Jovi (10 intervenciones) el 03/08/2005 11:40:00
Pero es que si le paso la variable como string, entonces no me modifica el valor con la cadena que necesito, se queda como si no hubiera llamado a la función.

Por si sirve de algo, la cabecera de la función en la dll es:

extern "C" DllExport int __stdcall getDatos(char * c, char ** result);
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
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:stringbuilder

Publicado por Yamil Bracho (1164 intervenciones) el 03/08/2005 14:36:39
Pero segun la declaracion lo debe modificar porque estas pasando un apuntador. En el caso del segundo parametro estas hablando de un apuntador a un arreglo de String, en C# seria , String [][] arreglo y no un StringBuilder, el cual es una estructura totalmente distinta.
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:stringbuilder

Publicado por Jovi (10 intervenciones) el 04/08/2005 10:29:48
He utilizado el string [ ] arreglo y al usar el método .tostring() en la variable resultado me devuelve la cadena "System.String[ ]"
¿Cómo hago para que me de el contenido? he estado buscando algo parecido al encoding para el tipo byte[ ] pero no encuentro nada.
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
sin imagen de perfil
Val: 158
Bronce
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

RE:stringbuilder

Publicado por Yamil Bracho (1164 intervenciones) el 04/08/2005 15:09:26
Ahi deberia retornarte la direccion del apuntador donde esta guardado el arreglo en el heap. Tienes que recorrer el arreglo e ir concatenando para obtener su contenido. Por ejemplo

StringBuilder sb = new StringBuilder();
for ( int i=0; i < arreglo.Length; i++) {
sb.Append( arreglo[ i ] );
}
Console.WriteLine( sb.ToString());
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