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 C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Error Conversión String to Char
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Error Conversión String to Char  (Leído 3,531 veces)
MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
[C] Error Conversión String to Char
« en: 31 Marzo 2013, 16:08 pm »

Hola, estoy intentando hacer una aplicacion con VisualC++, y me tira un error en este trozo de codigo...

Código
  1. private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
  2.  
  3. FILE *Archivo;
  4. char Nombre[10];
  5. int celda;
  6.  
  7.  
  8. strcpy(Nombre, AbrirArchivo->Text);
  9.                //AbrirArchivo es un Textbox
  10.  
  11. Archivo = fopen(AbrirArchivo->Text, "wb");
  12. if (Archivo != NULL)
  13. {
  14. Estado->Text = "Error: No se encuentra el archivo";
  15.                        //Estado es otro Textbox
  16. }
  17. else
  18. {
  19. fclose(Archivo);
  20. }
  21.  
  22.  
  23. }
  24. };
  25.  

Los errores que me dan son estos:

Citar
error C2664: 'strcpy' : no se puede convertir el parámetro 2 de 'System::String ^' a 'const char *'

Citar
error C2664: 'fopen' : no se puede convertir el parámetro 1 de 'System::String ^' a 'const char *'

No se como hacer la conversión, así que a ver si alguien me puede echar una mano...  :silbar:

Saludos


En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [C] Error Conversión String to Char
« Respuesta #1 en: 31 Marzo 2013, 16:52 pm »

¿Quizás así?:
Código
  1. private:
  2. System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
  3. {
  4.  
  5.    FILE *Archivo;
  6.    char Nombre[10];
  7.    int celda;
  8.  
  9.  
  10.    strcpy(Nombre, (char*)Marshal::StringToHGlobalAnsi(AbrirArchivo->Text).ToPointer());
  11.    //AbrirArchivo es un Textbox
  12.  
  13.    Archivo = fopen((char*)Marshal::StringToHGlobalAnsi(AbrirArchivo->Text).ToPointer(), "wb");//Esto lo veo poco lógico pues ya podrías hacer:
  14.    //Archivo = fopen(Nombre, "wb");
  15.    if (Archivo != NULL)
  16.    {
  17.        Estado->Text = "Error: No se encuentra el archivo";
  18.        //Estado es otro Textbox
  19.    }
  20.    else
  21.    {
  22.        fclose(Archivo);
  23.    }
  24. }
  25. };
Fuente: http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.stringtohglobalansi.aspx


« Última modificación: 31 Marzo 2013, 16:56 pm por avesudra » En línea

Regístrate en
MeCraniDOS


Desconectado Desconectado

Mensajes: 337


Sr. Glass


Ver Perfil
Re: [C] Error Conversión String to Char
« Respuesta #2 en: 31 Marzo 2013, 17:46 pm »

¿Quizás así?:

Ahora me sale esto...

Citar

error C2653: 'Marshal' : no es un nombre de clase o espacio de nombres

error C2228: el operando izquierdo de '.ToPointer' debe tener class/struct/union

1>        el tipo es ''unknown-type''

error C3861: 'StringToHGlobalAnsi': no se encontró el identificador

error C2653: 'Marshal' : no es un nombre de clase o espacio de nombres

error C2228: el operando izquierdo de '.ToPointer' debe tener class/struct/union

1>        el tipo es ''unknown-type''

error C3861: 'StringToHGlobalAnsi': no se encontró el identificador

En línea

"La física es el sistema operativo del Universo"
     -- Steven R Garman
avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: [C] Error Conversión String to Char
« Respuesta #3 en: 31 Marzo 2013, 18:31 pm »

Pues no sé, igual es porque no tiene esto:
Código
  1. using namespace System::Runtime::InteropServices;
Pero vamos que ya te digo que ni idea porque en el link que te he pasado lo hacen así:
Código
  1. using namespace System;
  2. using namespace System::Runtime::InteropServices;
  3.  
  4. #include <iostream>                                                 // for printf
  5.  
  6.  
  7. int main()
  8. {
  9.    // Create a managed string.
  10.    String^ managedString = "Hello unmanaged world (from the managed world).";
  11.  
  12.    // Marshal the managed string to unmanaged memory.
  13.    char* stringPointer = (char*) Marshal::StringToHGlobalAnsi(managedString ).ToPointer();
  14.  
  15.    printf("stringPointer = %s\n", stringPointer);
  16.  
  17.    // Always free the unmanaged string.
  18.    Marshal::FreeHGlobal(IntPtr(stringPointer));
  19.  
  20.    return 0;
  21. }
En línea

Regístrate en
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Char[] != String « 1 2 »
Programación General
Hendrix 19 10,956 Último mensaje 22 Agosto 2011, 03:54 am
por someRandomCode
comparacion de un string con char en java
Java
sauce19 9 13,208 Último mensaje 23 Agosto 2011, 17:39 pm
por someRandomCode
Problema conversión Unsigned char a char
Programación C/C++
juliodiez 4 2,906 Último mensaje 19 Enero 2013, 04:34 am
por juliodiez
Notice: Array to string conversion in ... T_T
PHP
JJMD 6 6,883 Último mensaje 9 Julio 2013, 23:57 pm
por JJMD
Conversion de String Constante a Char*
Programación C/C++
jonniemaxxx 5 2,965 Último mensaje 24 Mayo 2014, 20:19 pm
por jonniemaxxx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines