Pasar tipo String__gc * a CHAR

26/01/2005 - 23:24 por Warren | Informe spam
Hola al grupo

Estoy intentando realizar una aplicacion q realize una serie de operaciones
con archivos de texto. Soy muy novato con la WinAPI y realizo el tratamiento
de Streams con lo típico de ANSI C ( fopen...).

Pero estoy intentando hacer una interfaz modo vetana con las Windows Forms
del Visual Studio. Entonces para la apertura de los archivos primero llamo a
un FileDialog para q permita al usuario elegirlo. El problema q tengo es q
no sé como tratar el fichero una vez elegido, sobre todo por los tipos con
los q trabaja. Lo q habia pensado es mediante la siguiente llamada recoger
el nombre del fichero en una cadena y utilizar luego un fopen, algo asi:

cadena= openFileDialog1->get_FileName();

fopen( cadena, "w");



Pero esta llamada no devuelve un tipo CHAR sino un tipo String__gc *, sino
me equivoco.

Si alguien me pudiera decir como paso de este tipo a un CHAR se lo
agradeceria mucho.

Espero haber explicado bien mi problema y q alguien me pueda ayudar

Gracias por adelantado

Un Saludo!!
 

Leer las respuestas

#1 Rodrigo Corral [MVP]
27/01/2005 - 09:48 | Informe spam
Lo primero de todo aclarar algún cocepto

Windows Forms son parte del .Net Framework, no son parte del API Win32. Por
lo tanto tu programa utilizara el .Net Framework para correr. Si es esto lo
que quieres perfecto, pero entonces el camino adecuado para manejar ficheros
seria utilizar las clases que proporciona el .Net Framework, utilizando por
ejemplo la clase TextReader de el namespace System.IO. Ahora esta intentando
mezclar código manejado con codigo nativo (fopen) y no es que no se pueda,
de hecho VC++.NET es el unico lenguaje .Net que soporta esto, pero no me
parece buena idea a no ser que estes intentando migrar código antiguo o
asi...

Si lo que quieres es un programa nativo, que no necesite el .Net Framework
para correr el camino a seguir es MFC o WTL. Si estas comenzando te será más
facil MFC.

De todos modos y dicho lo anterior:

String *psString = S"Hola"; //Cadena manejada (String_gc)
__wchar_t __pin *wszString = ::PtrToStringChars(psString); //Conversión a
cadena nativa

Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org

Preguntas similares