convertir unicode string to char en c++ builder
Saludos a todos
Necesito convertir un String 'o UnicodeString a un char * char * a = "Ejemplo"; // El resultado de esto es: "Ejemplo"; String a = "Ejemplo"; // El resultado de esto es: L"Ejemplo"; Como ven la (L) esta delante de lo que me da como resultado,cosa que quisiera eliminar porque asi me da error en lo que estoy haciendo. |
Cita:
Revisa este link puede que te sirva |
Cita:
1.- Si tienes activada en las opciones del proyecto: _TCHAR maps to = char entonces y partiendo un un String Unicode, la función t_str() te devuelve una cadena tipo char*. 2.- Si tienes activada en las opciones del proyecto: _TCHAR maps to = wchar_t entonces y partiendo un un String Unicode, la función t_str() te devuelve una cadena tipo wchar_t*. 3.- c_str() siempre devuelve un wchar_t si se aplica a un UnicodeString. 4.- Siempre puedes forzar la conversión a AnsiString y aplicar c_str():
Saludos. |
Gracias amigos por contestar
Estuve probando las variantes que me dieron pero aun sigue mi el problema Voy a explicar mejor lo que quiero lograr,quizas este cometiendo algun error, En la exportacion de un excel quiero dar la opcion de que se escoja la carpeta donde se va a guardar ese excel,para ello obtengo la direccion de un DirectoryListBox1 y lo paso a un Edit,en otro Edit doy la opcion para ponerle el nombre al excel Código:
String Direccion = Edit1->Text; Código:
Excel.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs", c); Código:
Excel.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs","D:\\prueba.xlsx"); Gracias por su tiempo!! |
Cita:
Entonces creo que podrías simplemente hacer: Código:
String Salvar = Edit1->Text + "\\\\" + Edit2->Text + ".xlsx"; Edito: Y se puede reducir el código un poco más: Código:
char *c = AnsiString(Edit1->Text + "\\\\" + Edit2->Text + ".xlsx").c_str(); |
saludos ecfisa
Me sigue dando el mismo error: Compruebe que la carpeta especificada existe. Compruebe que la carpeta que contiene el archivo no es de solo lectura. Compruebe que el archivo no contiene ninguno de los siguientes caracteres: < > ? [ ] : | o * Compruebe que el nombre del archivo o de la ruta no tienen mas de 218 caracteres. Sin embargo como le decia cuando lo pongo directamente funciona Código:
Excel.OlePropertyGet("Workbooks").OlePropertyGet("Item",1).OleProcedure("SaveAs","D:\\prueba.xlsx"); |
Hola LuisMiguel.
Pero ese eror no proviene de la composición de la cadena, cuyo valor es fácilmente comprobable: Código:
void __fastcall TForm1::Button1Click(TObject *Sender) { |
Hice la siguiente prueba con lo que usted me dijo:
Código:
char *b = AnsiString(Edit1->Text + "\\\\" + Edit2->Text + ".xlsx").c_str();// resultado D:\backups\\prueba.xlsx Quizas el detalle este en las \\\\ que tiene Código:
char *b = AnsiString(Edit1->Text + "\\\\" + Edit2->Text + ".xlsx").c_str(); |
probe como me dijo y devuelve: Tipo de variable incorrecto
|
Hola LuisMiguel
. Cita:
Cita:
Saludos. |
Lo que ingreso
Edit1 D:\backups Edit2 prueba |
Cita:
Dado tu ingreso, si deseas como resultado: "D:\backups\Prueba.xlsx" podés hacer: Código:
String s = Edit1->Text; Código:
AnsiString s = Edit1->Text; |
Finalmente la solucion para exportarlo es con:
Código:
String s = Edit1->Text; |
La franja horaria es GMT +2. Ahora son las 06:41:39. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi